日期:2014-05-16  浏览次数:20382 次

可以构建json对象却不能构建json数组
使用了net.sf.json.JSONObject构造jsonx,下面两句第一句可以,第二句报错,说不是一个json数组。
JSONObject jsonObject = JSONObject.fromObject(data);
itemArray = JSONArray.fromObject(jsonObject.getJSONArray("itemz"));

后台这样记录的,然后我绞尽脑汁没想出来什么样的字符串能构造呈JSONObject ,但是提取里面的数组会报错。想了很多,比如在里面写了单引号、大括号、逗号等,都会在第一句直接报错。
求大牛指点:怎么写能通过第一句通不过第二句?
json java net.sf.json

------解决方案--------------------
你那个就不是json数组吧  他必须是数组类型的吧?
------解决方案--------------------
JSONArray.fromObject(jsonObject.getJSONArray("itemz"));

反正我举得很怪
------解决方案--------------------

temArray = JSONArray.fromObject(jsonObject.getJSONArray("itemz"));改成
temArray = jsonObject.getJSONArray("itemz");
本来就返回的是一个jsonarray了。
如果不知道数据怎么样的可以反过来构建啊,如

JSONObject jsonObject = new JSONObject();
JSONArray array = new JSONArray();
array.add("test");
array.add("test1");
jsonObject.put("itemz",array);
System.out.println(jsonObject.toString(4);
看一下输入就知道了
------解决方案--------------------
引用:
Quote: 引用:


temArray = JSONArray.fromObject(jsonObject.getJSONArray("itemz"));改成
temArray = jsonObject.getJSONArray("itemz");
本来就返回的是一个jsonarray了。
如果不知道数据怎么样的可以反过来构建啊,如

JSONObject jsonObject = new JSONObject();
JSONArray array = new JSONArray();
array.add("test");
array.add("test1");
jsonObject.put("itemz",array);
System.out.println(jsonObject.toString(4);
看一下输入就知道了

谢谢你的方法。不过我遇见的问题是大部分情况下是正常的,不知道有些用户输入了什么,导致我生成的字符串可以转为json对象而不能提取json数组。

最大的可能就是没有itemz这个键,否则itemz不单单放数组,这个可能不大。
可以用containsKey(key)判断一下,我有过一次遇到这种问题是这种原因。