JSONObject toJSONString错误的解决

作者:陌下微尘 时间:2021-09-14 07:17:32 

JSONObject toJSONString错误

1.com.alibaba.fastjson.JSONObject 继承了JSON

可以使用其2个重要的方法:

Model model = new Model();
String json = JSONObject.toJSONString(model); // serializes model to Json
Model model2 = JSONObject.parseObject(json, Model.class); // deserializes json into model2

即可以将json字符串转为json对象,如果该json对象的内容是可预期的对象类型,那么可以通过Model model2 = JSONObject.parseObject(json, Model.class); 取得预期的对象;

如果是不可预期的json字符串时,但有固定的key,则可通过JSONObject jsonObject = JSONObject.parseObject(jsonStr);

然后通过 jsonObject.getString("key");等基本方法获取key对于的value.

2.在使用时需要注意的地方

并非所有的对象,都能通过JSONObject.toJSONString(model) 转换成功。

例如:在接入阿里语音验证码时,对SingleCallByTtsRequest请求对象使用以上方法时,就会转换报错。

SingleCallByTtsRequest extends RpcAcsRequest<SingleCallByTtsResponse>?
RpcAcsRequest<T extends AcsResponse> extends AcsRequest<T>?
SingleCallByTtsResponse extends AcsResponse

他们的继承关系如上,这里并未对错误原因进行深入分析,猜测是因为其中有相互引用导致解析转换失败。

3.默认过滤掉值为null的key

public static String toJSONString(Object object)

该方法将实体对象转换成Json字符串时默认忽略值为null的属性。

public static String toJSONString(Object object, SerializerFeature… features)

该方法将实体对象转换成Json字符串时,如果不传递参数SerializerFeature.WriteMapNullValue,则忽略值为null的属性。

JSONUtils.toJSONString的一个坑

JSONUtils.toJSONString(null); //返回一个为"null"的字符串

这样会导致一个结果就是StringUtils.isBlank判断后,会为false

因为高德返回的这个数据结构是个key-value结构,除了null,就是一个带有&rdquo;{}&ldquo;的一个字符串。

不需要判断使用StringUtils.isBlank进行判断

public class JSONUtils {
? ? public static String toJSONString(Object o) {
? ? ? ? JSONWriter writer = new JSONWriter();
? ? ? ? writer.writeObject(o);
? ? ? ? return writer.toString();
? ? }
? ??
? ? public static Object parse(String text) {
? ? ? ? JSONParser parser = new JSONParser(text);
? ? ? ? return parser.parse();
? ? }
}
? ? public void writeNull() {
? ? ? ? write("null");
? ? }
? ??
? ? @SuppressWarnings({ "unchecked", "rawtypes" })
? ? public void writeObject(Object o) {
? ? ? ? if (o == null) {
? ? ? ? ? ? writeNull();
? ? ? ? ? ? return;
? ? ? ? }

来源:https://blog.csdn.net/qq_33045443/article/details/90059429

标签:JSONObject,toJSONString,错误
0
投稿

猜你喜欢

  • Java中Socket用法详解

    2021-07-27 07:14:07
  • Java 格式化输出JSON字符串的2种实现操作

    2023-11-13 09:41:10
  • 国内分布式框架Dubbo使用详解

    2022-05-10 13:38:27
  • java中类与对象的使用详情

    2023-09-27 17:10:43
  • Java实现滑动验证码生成(后端工具类)

    2022-02-07 01:26:37
  • spring-cloud-gateway动态路由的实现方法

    2021-07-25 15:24:37
  • java 解决异常 2 字节的 UTF-8 序列的字节2 无效的问题

    2021-06-01 10:29:00
  • c# 在windows中操作IIS设置FTP服务器的示例

    2023-07-18 06:13:01
  • android实现将位置信息写入JPEG图片文件

    2023-04-16 21:26:00
  • 解决Maven项目中 Invalid bound statement 无效的绑定问题

    2021-08-13 10:30:41
  • C#文件流读写和进度回调示例详解

    2022-08-12 14:52:31
  • IDEA自定义常用代码块及自定义快捷摸板

    2022-01-13 18:54:22
  • 解析C#彩色图像灰度化算法的实现代码详解

    2022-01-26 07:34:55
  • Java实现多文件上传功能

    2023-08-02 12:52:02
  • Sharding-Proxy基本功能用法介绍

    2021-10-17 06:41:03
  • Android SearchView搜索控件使用方法详解

    2022-07-09 16:49:21
  • Runtime.getRuntime().exec 路径包含空格的解决

    2023-05-15 23:54:32
  • Android使用GestureOverlayView控件实现手势识别

    2023-03-02 08:46:26
  • c#中list.FindAll与for循环的性能对比总结

    2021-08-15 21:20:44
  • C#创建Windows服务与服务的安装、卸载

    2022-12-25 00:46:58
  • asp之家 软件编程 m.aspxhome.com