fastjson解析php生成的json报错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了fastjson解析php生成的json报错相关的知识,希望对你有一定的参考价值。

php服务端生成了如下json字符串resultStr:

"errno":0,
"msg":"Success",
"total_count":3,
"data":[
"0","id":"1","product_id":"1","product_name":"商品A","recon_status":"N","status":"Y",
"1","id":"2","product_id":"1","product_name":"商品A","recon_status":"N","status":"Y",
"2","id":"3","product_id":"2","product_name":"商品B","recon_status":"N","status":"N"
]

问题就出在php生成的时候,会在data数据前加个数组元素索引;对php不熟悉,这种情况用fastjson的JSON.parseObject(resultStr)解析就会报错;没有那个索引0,1,2,就解析正常;

求助~ 是应该服务端调整生成结果,还是消费端按此格式解析呐,怎么解析咯~
服务端返回是这样的,提问里写错了点;

"errno":0,
"msg":"Success",
"total_count":3,
"data":
"0":"id":"1","product_id":"1","product_name":"商品A","recon_status":"N","status":"Y",
"1":"id":"2","product_id":"1","product_name":"商品A","recon_status":"N","status":"Y",
"2":"id":"3","product_id":"2","product_name":"商品B","recon_status":"N","status":"N"

参考技术A 你用PHP自带的json解析函数json_encode();来解析追问

是两个应用 服务端应用是php 我是java后台 解析完需要改参数 再在我的前台按我的格式显示。。。

已解决。fastjson解析没问题,只是是解析成map, 0-商品A, map转list报错正常~~

追答

哦 ,JAVA我不熟

fastjson怎么解析像“

参考技术A   1. fastjson生成和解析json数据
  (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<Map<String,Object>)
  2.通过一个android程序测试fastjson的用法。
  fastjson简介:
  Fastjson是一个Java语言编写的高性能功能完善的JSON库。fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jackson。并且还超越了google的二进制协议protocol buf。Fastjson完全支持son.org的标准,也是官方网站收录的参考实现之一。支持各种JDK类型。包括基本类型、JavaBean、Collection、Map、Enum、泛型等。支持JDK 5、JDK 6、Android、阿里云手机等环境。
  一. fastjson生成json字符串(JavaBean,List<JavaBean>,List<String>,List<Map<String,Object>)
  String jsonStrng = JSON.toJSONString(object);
  二. fastjson 解析json字符串为四种类型
  1. JavaBean
  Person person = JSON.parseObject(jsonString, Person.class);
  2. List<JavaBean>
  List<Person> listPerson =JSON.parseArray(jsonString, Person.class);
  3. List<String>
  List<String> listString = JSON.parseArray(jsonString, String.class);
  4. List<Map<String,Object>>
  List<Map<String, Object>> listMap = JSON.parseObject(jsonString, new TypeReference<List<Map<String,Object>>>()); (注意:此处可看出fastjson反射机制比gson更准确, id = 1001 通过fastjson反射仍是 id = 1001 , 而通过gson反射结果 为 id =1001.0

以上是关于fastjson解析php生成的json报错的主要内容,如果未能解决你的问题,请参考以下文章

Fastjson利用笔记

Fastjson利用笔记

Fastjson利用笔记

75JSON 解析库---FastJson, Gson

FastJson使用示例

fastjson 返回json字符串,JSON.parse 报错