首页 > 其他分享 >对象转JSON 遇到的BigDecimal 科学计数法的问题,json转化字段单独处理

对象转JSON 遇到的BigDecimal 科学计数法的问题,json转化字段单独处理

时间:2023-09-28 15:22:43浏览次数:37  
标签:fastjson java BigDecimal 计数法 json import serializer out

问题描述:
项目需要发送JSON数据,BigDecimal转成json仍然显示科学计数法,如果使用BigDecimai的toPlainString()需要将数据格式转为String,所以找了一下fastjson的自定义序列化内容,记录一下,以免以后忘记

解决方案:
方案一:

JSONObject.toJSONString(vo,SerializerFeature.WriteBigDecimalAsPlain)

  

格式化是添加SerializerFeature.WriteBigDecimalAsPlain 这个是fastjson自带的

方案二:
自定义处理

@JSONField(name="payPrice",serializeUsing = NumberSerializer.class)
private BigDecimal payPrice;

  


@JSONField注解可以定义转化后的JSON字段名字等属性,其中serializeUsing可以做单独处理

import com.alibaba.fastjson.serializer.JSONSerializer;
import com.alibaba.fastjson.serializer.ObjectSerializer;
import com.alibaba.fastjson.serializer.SerializeWriter;

import java.io.IOException;
import java.lang.reflect.Type;
import java.math.BigDecimal;

public class NumberSerializer implements ObjectSerializer {
    @Override
    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {

        SerializeWriter out = serializer.out;

        if (object == null) {
            out.writeNull();
            return;
        }

        if ("java.math.BigDecimal".equalsIgnoreCase(fieldType.getTypeName())) {
            BigDecimal value = (BigDecimal) object;

            out.write(value.toPlainString());
        }

    }
}

  


write方法包括的很多参数,可以灵活处理一些转换

标签:fastjson,java,BigDecimal,计数法,json,import,serializer,out
From: https://www.cnblogs.com/shijiaoyun/p/17735869.html

相关文章

  • VScode对于json格式文件允许添加注释设置(永久有 效)
    如果你想让VSCode永久地将所有的.json文件都识别为JSONC,你可以通过修改VSCode的全局设置来实现。以下是具体步骤:在VSCode中按下Ctrl+,来打开设置(或者在菜单中选择"File"->"Preferences"->"Settings")。在搜索框中输入“files.associations”。在"Files:Associations......
  • SyntaxError: "undefined" is not valid JSON
    今天在写组件的一个接受JSON字符串的prop时,不知道为什么会报以下错误。file:[console]SyntaxError:"undefined"isnotvalidJSONfile:[Example.vue]<SVGv-if="data.length"v-for="itemindata":width="item.width":height="item......
  • xStream完美转换XML、JSON
    xStream框架xStream可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换;前面有介绍过json-lib这个框架以及Jackson这个框架它们都完美支持JSON,但是对xml的支持还不是很好。一定程度上限制了对Java对象的描述,不能让xml完全体现到对Java......
  • json
    JSON(JavaScript ObjectNotation)是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编......
  • fastjson parseobject typereference - 指定泛型类型
    Fastjson是一种Java中非常流行的JSON解析库,它可以将JSON字符串转换为Java对象。其中,parseObject方法是Fastjson提供的一种将JSON字符串解析为Java对象的方法,而TypeReference是Java泛型中的一个类,可以用于指定泛型类型,例如List、Map<String,Integer>等等。当我们使用parseObject......
  • [JSON|序列化] fastjson自定义字段命名规则 (转发)
    1序言博主本人近期也遇到了基于fatsjson自定义命名字段规则的问题,为加强对此的学习和记忆,故转发这篇博文。博主本人最终采取的方法21.1前置知识fastjson在将对象转变为JSON字符串时,字段默认使用CamelCase规则命名。在1.2.15版本之后,fastjson支持配置Proper......
  • Qt报错: variable has incomplete typte ‘QJsonObject’
    Qt常见运行失败的记录1.变量声明未实例化变量在头文件声明了,没new出来直接使用,导致程序运行崩溃2.定义变量时候下面出行红线,出现variblehasincompletetype‘QTextStream’variblehasincompletetype'QTextStream未添加QTextStream头文件3.Qt信号与槽连接失败的几......
  • 处理日期格式问题:JSON.stringify 导致日期少一天的解决方案
    在前端开发中,经常需要处理日期数据。然而,由于JavaScript日期的表示方式以及JSON格式化日期的一些特性,可能会导致日期数据在传输或存储过程中出现问题。一个常见的问题是使用JSON.stringify对日期进行序列化时,导致日期少一天。在这篇文章中,我们将探讨这个问题,并提供解决方案。......
  • Go每日一库之24:gjson
    简介之前我们介绍过gojsonq,可以方便地从一个JSON串中读取值。同时它也支持各种查询、汇总统计等功能。今天我们再介绍一个类似的库gjson。在上一篇文章Go每日一库之buntdb中我们介绍过JSON索引,内部实现其实就是使用gjson这个库。gjson实际上是get+json的缩写,用于读取JSO......
  • json数据传输压缩以及数据切片分割分块传输多种实现方法,大数据量情况下zlib压缩以及by
    json数据传输压缩以及数据切片分割分块传输多种实现方法,大数据量情况下zlib压缩以及bytes指定长度分割。importsysimportzlibimportjsonimportmathKAFKA_MAX_SIZE=1024*1024CONTENT_MIN_MAX_SIZE=KAFKA_MAX_SIZE*0.9defsplit_data(data):""":param......