fastjson

fastjson对JSON字符串,JSON对象以及javaBean之间的相互转换

 

1,对于JSON对象与JSON格式字符串的转换可以直接用 toJSONString()这个方法。

2,javaBean与JSON格式字符串之间的转换要用到:JSON.toJSONString(obj);

3,javaBean与json对象间的转换使用:JSON.toJSON(obj),然后使用强制类型转换,JSONObject或者JSONArray。

 

 

方案一:

//如果demoList字段对应的是数组[],那么用以下方式正确拿到数据
JSONArray arrays = data.getJSONArray("demoList");
List<IdBean> idBeans = JSON.parseObject(arrays.toJSONString(), new TypeReference<List<IdBean>>() {});

可能arrays为空,所以推荐使用方案二。

 

方案二:(推荐)

String demoListStr = data.getString("demoList");
ArrayList<DemoBean> demoList = JSON.parseObject(demoListStr, new TypeReference<ArrayList<DemoBean>>() {});
return new DemoResponse(JSON.toJSON(demoList));
}

 

问题1:fastjson syntax error, expect {, actual string

是因为json字符串转成对象的时候,因为json字符串中,数组属性的字段,json字符串中是"[ ]",而不是[ ]。

解决方案:

1. 最笨的方法就是用String.replaceAll,替换[ ]前后的"双引号,以及\转移斜杠。

2. 

问题2:nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.lang.String out of START_ARRAY token

跟问题1相反,javaBean转成json字符串的时候,数组属性的字段会转成[ ],就会报这个错误,应该转成"[ ]"。

解决方案:

把字段类型定义为String,不要定义为对象数组。

 

fastjson List转JSONArray以及JSONArray转List

1.fastjson  List转JSONArray
List<T> list = new ArrayList<T>();
JSONArray array= JSONArray.parseArray(JSON.toJSONString(list));


2.fastjson  JSONArray转List
JSONArray array = new JSONArray();
List<EventColAttr> list = JSONObject.parseArray(array.toJSONString(), EventColAttr.class);


3.fastjson  字符串转List
String str = "";
List<T> list = JSONObject.parseArray(str,T.class);

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FastjsonFastjson2都是JSON库,用于处理JSON格式的数据。 Fastjson2是Fastjson项目的重要升级,旨在为未来十年提供高性能的JSON库。相比于原来的FastjsonFastjson2在性能上有了很大的提升,并且更加安全。它完全删除了autoType白名单,提升了安全性。 在使用上,导入Fastjson2的依赖后,与原来的Fastjson在代码上基本相同。唯一的区别是在Fastjson2中,将`jsonArray.toJavaList`方法转变为`jsonArray.toList`。 总结来说,FastjsonFastjson2都是用于处理JSON数据的库,但Fastjson2是Fastjson的升级版本,提供了更高的性能和更好的安全性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [fastjson2 介绍及使用](https://blog.csdn.net/qq_33697094/article/details/128114939)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Fastjson2你开始使用了吗?来看看源码解析](https://blog.csdn.net/chenxuyuana/article/details/125581066)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值