2011-06-14 48 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

相關問題