2011-06-14 97 views
0

我正在使用JSON数组来处理层之间的数据。我一直在JSONObject上发生异常。你能否引导我走向这个问题的正确调试路径?
第一种方法:JSONObject异常

for(Object obj : salesDataArray) 
{ 
JSONObject salesData = (JSONObject) obj; 

异常我越来越:

java.lang.ClassCastException: java.lang.String incompatible with net.sf.json.JSONObject 

第二种方法:

for(Object obj : salesDataArray) 
{ 
JSONObject salesData = JSONObject.fromObject(obj); 

异常我越来越:

net.sf.json.JSONException: Unquotted string 'undefined' 
+0

你有没有尝试过:'String salesData =(String)obj;'?那么'obj.getClass()'的结果是什么? – 2011-06-14 16:18:53

+0

obj是什么类?如果它是一个字符串,它的内容是什么? – thkala 2011-06-14 16:20:20

+0

嗨thkala,类是JSONObject。
OBJECT CLASS NAME >>>>:class net.sf.json.JSONObject – t0mcat 2011-06-14 18:47:08

回答

0
System.out.println((String) obj); 

听起来像是你,如果你在这“未定义”没有摆在首位在那里有效的JSON数据。未定义的Javascript就像Java中的'null'一样。

2

您的salesDataArrayString对象的数组,而不是JSONObject对象。这是填充在哪里?最好的办法是打印出salesDataArray的值,并找出字符串是什么,并查看上游的原因是它们是以这种方式设置的。

另外,还要考虑使用泛型键入您salesDataArray,像

List<JSONObject> salesDataArray = .... // get the sales data from somewhere 
+0

Hi Richard,所有的数据来自前端层。 – t0mcat 2011-06-14 16:34:03

+0

Richard,salesDataArray是JSONArray – t0mcat 2011-06-14 19:12:55

+0

从文档(http://www.json.org/javadoc/org/json/JSONArray.html)中可以看出,JSONArray的元素必然是JSONObjects(见例如,get())上的返回类型。我想我会尝试一个老式的(int i = 0;我 2011-06-15 00:38:43