json格式化BigDecimal,保留2位小数

这篇具有很好参考价值的文章主要介绍了json格式化BigDecimal,保留2位小数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

场景

如下,在处理钱相关的业务时,接口明明已经保留了两位小数1.00,但前端接收的时候获取的却是1,小数点后面的‘0’没了。

@Data
public class UserVo {

    long id;
    
    String name;
    
    BigDecimal money;

}

其实,需要在BigDecimal参与json转化时,将其转化成String类型即可

一. Jackson的处理方式

1.编写一个类,实现JsonSerializer,并实现serialize方法

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
import java.math.BigDecimal;

public class BigDecimalSerialize extends JsonSerializer{

    @Override
    public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        if(o != null && o instanceof BigDecimal){
            BigDecimal bigDecomal = (BigDecimal) o;
            jsonGenerator.writeString(bigDecomal.setScale(2,BigDecimal.ROUND_DOWN)+"");
        }
    }
}

2.在需要特殊处理的属性上加上这个注解@JsonSerialize,并将第一步创建好的类名加到参数中

@JsonSerialize(using = BigDecimalSerialize.class)
BigDecimal money;
  • 以下是在测试类中测试的场景
@Test
    public void jacksonFormat() throws JsonProcessingException {
        UserVo userVo = new UserVo();
        userVo.setMoney(new BigDecimal(1.000));
        ObjectMapper mapper = new ObjectMapper();
        String result=mapper.writeValueAsString(userVo);
        System.out.println("result = " + result);
    }
  • 看下测试结果,成功保留了对应的小数位数,并帮我们转成了String类型,很完美

json格式化BigDecimal,保留2位小数

二. FastJson的处理方式

1.编写一个类,实现ValueFilter,并实现process方法

import com.alibaba.fastjson.serializer.ValueFilter;
import java.math.BigDecimal;

public class BigDecimalValueFilter implements ValueFilter {
	@Override
    public Object process(Object object,String name,Object value){
        if(null != value&&value instanceof BigDecimal){
            BigDecimal bigDecimal = (BigDecimal) value;
            return bigDecimal.setScale(5,BigDecimal.ROUND_DOWN).toString();
        }
        return value;
    }
}

2.使用的时候需要在后面加上我们自定义的的类对象,如下


JSON.parseObject(JSON.toJSONString(userVo, new BigDecimalValueFilter()))
  • 同样测试下看看效果如何
@Test
    public void fastJsonFormat(){
        UserVo userVo = new UserVo();
        userVo.setMoney(new BigDecimal(1.000));
        JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(userVo, new BigDecimalValueFilter()));
        System.out.println("jsonObject = " + jsonObject);
    }
  • 打印结果

json格式化BigDecimal,保留2位小数文章来源地址https://www.toymoban.com/news/detail-481167.html

到了这里,关于json格式化BigDecimal,保留2位小数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • VSCode打开Json 文件格式化

    在VSCode中打开JSON文件时,你可以使用以下步骤来格式化JSON并显示为多行: 使用快捷键: 在打开的JSON文件中,使用快捷键格式化文档。 Windows/Linux: Shift + Alt + F macOS: Shift + Option + F 右键菜单: 在打开的JSON文件中,右键单击,选择 \\\"Format Document\\\" 或 \\\"Format Selection\\\"。 命令面板

    2024年02月04日
    浏览(13)
  • Python(21)json.dumps()使用indent参数 格式化输出json数据格式

    json.dumps() 方法 将一个Python数据结构转换为JSON字符串 输出为 这样的格式一般都不优美,当数据很多的时候,看得就不是很直观方便。 可以使用 indent=4 参数来对json进行数据格式化输出,会根据数据格式缩进显示,读起来更加清晰 用法如下 输出为 json.dumps()方法,参数解释

    2024年02月08日
    浏览(9)
  • flask bootstrap页面json格式化

    flask bootstrap页面json格式化

    2024年02月07日
    浏览(13)
  • js将数组变量json格式化

    在js中,js变量和JSON是两个不同数据格式,两者的储存方式自然不相同。JSON格式是一种数据交换的规则,js变量则是javascript在程序需求场景中的数据表示。在js与不同语言的服务端进行数据交换过程中,js能够有内置的方法将其变量转化为JSON格式。 但是对于JS数组而言,如果

    2024年02月08日
    浏览(10)
  • Java json 格式化小工具兼容转义 json 串

    封装了一个格式化 json 小工具,支持标准的 json 格式 和 经过后端编程语言如 java 转义后的 字符串 json 格式的格式化输出,代码如下: 我们看下两种 json 数据: 注意第一种使用 JSON 工具处理时,并不能正常解析,需要先转义才行,注意: 在 IDEA中 测试时不能直接将上面的内

    2024年02月07日
    浏览(9)
  • vue中json格式化显示(vue-json-viewer)

    vue中json格式化显示(vue-json-viewer)

    使用npm: 使用yarm: 使用pnpm也可以 在 main.ts 中注册插件 在界面中使用 注意 :在main.ts文件中可能会出现以下得ts类型报错: 无法找到模块“vue-json-viewer”的声明文件。 解决方法: 先尝试安装 npm i --save-dev @types/vue-json-viewer 如果上面方法不行,在全局的 .d.ts 结尾的文件中添

    2024年03月13日
    浏览(10)
  • Excel将单元格中的json本文格式化

    打开Excel文件并按下ALT + F11打开Visual Basic for Applications(VBA)编辑器。 输入下面的代码 进入https://github.com/VBA-tools/VBA-JSON,下载release的最新代码 VBA编辑器,“文件”-“导入”, 导入文件 JsonConverter.bas 点击VBA编辑器的菜单栏上的\\\"工具\\\"。 选择\\\"引用\\\",然后在弹出的对话框中找到

    2024年02月14日
    浏览(12)
  • Java工具类——json字符串格式化处理

    Java工具类——json字符串格式化处理

    在我们拿到一团未经格式化的json字符串时,非常不方便查看,比如这样 因此随手写了个工具类用来格式化json。注意,原json字符串必须语法无误,并且不包含换行、空格、缩进等,否则会保留下来。 ok废话不多说上代码 运行后效果

    2024年01月17日
    浏览(17)
  • UE编辑器格式化xml或json

    UE编辑器格式化xml或json

    UE编辑器格式化XML数据,首先菜单【视图】=》【查看方式】=》【XML】,然后选中需要进行格式化的内容,点击菜单【格式】=》【重新缩进选择】  UE编辑器格式化JSON数据,首先菜单【视图】=》【查看方式】=》【JSON】,然后选中需要进行格式化的内容,点击菜单【格式】=》

    2024年02月11日
    浏览(15)
  • sublime text 格式化json快捷键配置

    sublime text 格式化json快捷键配置

    以 control+command+j 为例。 打开Sublime Text,依次点击左上角菜单Sublime Text-Preferences-Key Bindings,出现以下文件: 左边的是Sublime Text默认的快捷键,不可编辑。右边是我们自定义快捷键的地方,在中括号中加入以下数据并保存:

    2024年02月10日
    浏览(6)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包