Fastjson 自定义 json 的 值输出格式
2017-11-01 22:25
441 查看
使用 fastjson 自定义数值类型(也可以进行其他类型的处理)格式的配置说明。
fastjson 版本
com.alibaba:fastjson:1.2.37
json对象中数值的序列化处理在
js与
golang中结果是一致的,
java使用
fastjson默认情况 下与前两种是有区别的。 针对
json对象进行序列化
{"name":"wxcsdb88","age":23.0, "salary": 15.00, "leftTime":0.00, "cost":99.0200},
js 处理:
JSON.stringify({"name":"wxcsdb88","age":23.0, "salary": 15.00, "leftTime":0.00, "cost":99.0200}) output: "{"name":"wxcsdb88","age":23,"salary":15,"leftTime":0,"cost":99.02}"
golang 处理
为了保持json序列化过程中的顺序我们需要先将其转换成 map(golang中有序), 再转换成 json, 最后转成 json 字符串, 即 struct->map->json->jsonString output: "{"age":23,"cost":99.02,"leftTime":0,"name":"wxcsdb88","salary":15}"
java 处理
为了使json对象中的
value保持与
js的
JSON.stringify()及
golang的
json序列化保持一致结果,我们需要添加一个值过滤器,对特定类型值进行类型转换。
配置
自定义 json 对象中 value 的值过滤器FastJsonValueFilter
public class FastJsonValueFilter implements ValueFilter { public static String getPrettyNumberString(String number) { return BigDecimal.valueOf(Double.parseDouble(number)) .stripTrailingZeros().toPlainString(); } public static BigDecimal getPrettyNumber(String number) { return BigDecimal.valueOf(Double.parseDouble(number)) .stripTrailingZeros(); } @Override public Object process(Object object, String name, Object value) { // System.out.println(String.format("name: %s, value: %s, type is: %s", name, value, value.getClass().getSimpleName())); if (value != null && value instanceof BigDecimal) { return getPrettyNumber(value.toString()); } return value; } }
使用
FastJsonValueFilter fastJsonValueFilter = new FastJsonValueFilter(); public static String formatJsonContract(JSONObject jsonObject) { return JSONObject.toJSONString(jsonObject, fastJsonValueFilter, SerializerFeature.MapSortField, SerializerFeature.WriteNullStringAsEmpty, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNonStringKeyAsString, SerializerFeature.WriteNullNumberAsZero); }
相关文章推荐
- SpringMVC使用fastjson自定义Converter支持返回jsonp格式
- SpringMVC使用fastjson自定义Converter支持返回jsonp格式(转)
- 使用fastjson与SpringMVC实现自定义HttpMessageConverter接收和获取JSON格式的数据
- fastjson @JSONField自定义输出字段
- golang 自定义time.Time json输出格式
- fastjson @JSONField自定义输出字段
- Fastjson 自定义输出
- fastjson和SpringMVC实现自定义HttpMessageConverter接收和获取JSON格式的数据
- .NET 自定义Json序列化时间格式
- springmvc 输出json时日期格式处理
- 自定义打印输出函数格式,模拟printf函数
- 存储过程解析表菜单并输出JSON格式字符串
- Springmvc输出json格式的数据
- 将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
- fastjson转换json格式数据为List<HashMap>转换异常问题
- php如何输出中文json格式字符串
- 自定义EL表达式,将对象转成json格式,关键代码
- codec ruby和json格式输出
- Hadoop & Hadoop Streaming 自定义输出格式
- FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换