使用Json读取Json字符串导致错误“不是Json数组”
Reading Json String using Gson results error "not a JSON Array"
在我的项目我有一个复杂的json响应。我想读GSon。
JSON : {'FoodMenuRS':{'Results':[{'Items':{'Item':[{'@Id':'24'},{'@Id':'24'}]}}, {'Items':{'Item':{'@Id':'24'}}}]}}
它包含一个JSONArray与第一个"Item"和第二个JSONObject。因此它的调用导致错误,
failed to deserialize json object {"@Id":"24"} given the type java.util.List<com.servlet.action.ItemInfo> and java.lang.IllegalStateException: This is not a JSON Array.
请帮助我如何处理这种情况。谢谢。
您显示的字符串是JSONObject
而不是JSONArray
。在这种情况下,你首先必须获得JSONObject并在那个JSONObject上执行进一步的解码。
JSONObject - {}
JSONArray - []
实际上JSONObject
或JSONArray
应该使用Double-quotes(")
你的JSON是有效的,但不是双引号("),因为JSON支持简单的引号(')和没有引号在键名。看到http://sites.google.com/site/gson/gson-user-guide TOC-Serializing-and-Deserializing-Colle
但是这个JSON有以@开头的键名。对于JSON字符串,此字符在名称的开头是有效的(参见右列http://www.json.org/),但对于Java,此名称是非法的(参见命名部分http://download.oracle.com/javase/tutorial/java/nutsandbolts/variables.html)。具体来说,以@开头的名字是注释,你不能使用注释标签来声明变量、字段、方法等。
这不是一个有效的JSON对象。JSON中的字符串总是封装在双引号中("
)。联系JSON的制作人,告诉他使用正确的编码器
相关文章:
- 从JSON填充列表(而不是HTML)
- 处理一个JSON文件;完全相同的副本不是
- http请求使用html而不是json进行响应
- Sencha Ext JS排序标准以字符串而不是JSON的形式发送
- 按数字而不是按名称选择JSON对象
- 点击浏览器的“后退”按钮显示的是JSON而不是HTML(使用Rails和d3.js)
- 在数据表中使用 JSON 对象而不是数组
- 我怎么能在IONIC应用程序中使用Json对象而不是硬编码对象呢
- '对象不是函数'当使用angular连接两个json数组时
- 主干:在变量中提供JSON,而不是通过URL获取
- 在JSON中创建一个数据对(不是字典,而是两个独立的数据)
- 从aspx.cs页面获取jquery post中的Null响应而不是json
- 将 json 发送到(不是 REST)WCF 服务
- eval() 在解析 json 对象时不是强制性的吗?
- 在使用Protractor进行测试时,我可以用json文件替换结果,而不是调用实际的REST端点
- uncauctTypeError:undefined在使用名为的JSON对象时不是函数
- 快递邮件接收json不是我发送的
- 如何将PHP对象序列化为JavaScript对象(不是JSON)
- ajax返回空字符串,而不是json[python-cgi]
- 如何使用自定义JSON(不是GeoJSON)与Highcharts地图