expect ‘‘ at 0, actual =] with root

Posted 程序员超时空

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了expect ‘‘ at 0, actual =] with root相关的知识,希望对你有一定的参考价值。

前言

转换一个JSON数组报错

15:58 ERROR o.a.c.c.C.[.[.[.[dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is com.alibaba.fastjson.JSONException: expect ':' at 0, actual =] with root cause
com.alibaba.fastjson.JSONException: expect ':' at 0, actual =
	at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:302)
	at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:1144)
	at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:1149)
	at com.alibaba.fastjson.parser.deserializer.MapDeserializer.deserialze(MapDeserializer.java:23)
	at com.alibaba.fastjson.parser.deserializer.ContextObjectDeserializer.deserialze(ContextObjectDeserializer.java:9)
	at com.alibaba.fastjson.parser.DefaultJSONParser.parseArray(DefaultJSONParser.java:787)
	at com.alibaba.fastjson.parser.DefaultJSONParser.parseArray(DefaultJSONParser.java:721)
	at com.alibaba.fastjson.parser.DefaultJSONParser.parseArray(DefaultJSONParser.java:716)
	at com.alibaba.fastjson.JSON.parseArray(JSON.java:627)
	at com.alibaba.fastjson.JSON.parseArray(JSON.java:607)

参数

[
	"a":null,
	 "b":"1",
	 "c":[1,2,3]
	,
	"a":null,
	 "b":"1",
	 "c":[4,5,6]
	
]

原因

后端接收时为Object 形式直接data.toString()转换是错误的

List<JSONObject> models = JSONObject.parseArray(data.toString(), JSONObject.class);

正确做法

 String str = JSONObject.toJSONString(data);
 List<JSONObject> models = JSONObject.parseArray(str, JSONObject.class);

先转换为JSON字符串,再转换为数组

后端接收json对象时,会转换为a=null,...这种形式
我们需要的是a:null这种形式
形式冲突

参考文章:给了启发

以上是关于expect ‘‘ at 0, actual =] with root的主要内容,如果未能解决你的问题,请参考以下文章

INCORRECT RESULT SIZE: EXPECTED 1, ACTUAL 0错误以及解决方法

QueryError:Incorrect result size: expected 1, actual 0

org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0

syntax error, expect {, actual error, pos 0出错调试

NUnit CollectionAssert.AreEqual(expected,actual) vs Assert.IsTrue(expected.SequenceEqual(actual))

Selenium ruby常用api