2011-07-29 143 views
1

我的PHP腳本的JSON結果有問題。我無法在JAVA中提取此結果。下面有錯誤:JSON轉換結果在Java失敗(JSONObject無法轉換爲JSONArray)

Error converting result org.json.JSONException: Value 
{"3":[{"date":"25\/07\/2011","descr":"Une colloque bla bla","numColloque":"1","titre":"Une colloque"}], 
"2":[{"mail":"[email protected]","descr":"truc truc","nom":"Une personne","tel":"0600000000","numPersonne":"1"}], 
"1":[{"lien":"http:\/\/www.irdes.fr","numTypeActu":"1","date":"25\/07\/2011","titre":"Une actualité récente","numActu":"1"}], 
"7":[{"numEtablissement":"1","specialite":"STG","mention":"une mention","modalite":"BTS","titre":"Un titre de formation","numFormationCours":"1"}], 
"6":[{"numEtablissement":"1","numEnseignement":"1","titre":"Cours de bla bla","numEnseignant":"1"}], 
"5":[{"date":"31\/07\/2011","descr":"Université paris descartes dans le 1-ème arrondissement de Paris","numEtablissement":"1","libelle":"IUT Paris DESCARTES"}], 
"4":[{"numDocument":"1","lienPDF":"http:\/\/www.irdes.com","date":"25\/07\/2011","numTypeDocument":"1","descrRapide":"un glossaire qui regroupe du bla bla","nom":"un document de glossaire"}, 
     {"numDocument":"2","lienPDF":"http:\/\/www.irdes.com","date":"25\/07\/2011","numTypeDocument":"2","descrRapide":"Une synthèse parlant d'un truc","nom":"Une synthèse"}], 
"9":[{"lien":"http:\/\/www.irdes.fr","descr":"un séminaire sur le blabla","date":"25\/07\/2011","heure":"14h30","nom":"Un séminaire","numSeminaire":"1"}], 
"8":[{"numPublication":"1","lienPDF":"http:\/\/www.irdes.com","date":"25\/07\/2011","numTypePublication":"1","titre":"Une publication"}, 
     {"numPublication":"2","lienPDF":"http:\/\/www.irdes.com","date":"25\/07\/2011","numTypePublication":"2","titre":"un titre de publication"}, 
     {"numPublication":"3","lienPDF":"http:\/\/www.irdes.com","date":"25\/07\/2011","numTypePublication":"3","titre":"un titre"}]} 

of type org.json.JSONObject cannot be converted to JSONArray 

我結果的語法很簡單:

{"Object1":[{"id":"value"},{"id":"value"}], 
"Object2":[{"id":"value"},{"id":"value"}], 
... 
} 

我對提取JAVA腳本(LIGNE錯誤:有**):

result=sb.toString(); 
**JSONArray jArray = new JSONArray(result);** 
for (int i=1;i<=9;i++){ 
    JSONObject typeUpdateObject = jArray.getJSONObject(i); 
    extraction(typeUpdateObject, i); 
} 

這不是這種提取的正確方法嗎?

回答

2

由克里斯和查爾斯的答案是正確的,你應該看看在JSON specification。也就是說,我相信以下是你正在尋找的。

JSONObject obj = new JSONObject(result); 
for(int i=1;i<=9;i++) { 
    JSONArray arr = obj.getJSONArray(""+i); 
    for(int j=0;j<arr.length();j++) 
     extraction(arr.getJSONObject(j), i); 
} 
+0

感謝您的代碼馬特:)只是爲第二個,它是j變量:)(j toshiro92

+0

感謝您的區別! –

7

您在對象和數組之間感到困惑。

你發佈的代碼示例都是對象{}而數組是[]

你擁有的結構是:{[{}]}

而您解析代碼片斷期待:[{}]

有錯誤一大提示: 類型org.json.JSONObject不能轉換到JSONArray

一個對象是key:value對的無序列表。

{ // object 
    "key" : "value", 
    "key2" : "another value" 
} 

數組是值的有序(索引)列表:

[ // array 
    "value1", 
    "value2" 
] 
+0

我明白,但我的PHP代碼編碼一個數組,對象數組值。感謝您的解釋。 – toshiro92

1
{ 
    "glossary": { 
     "title": "example glossary", 
     "GlossDiv": { 
      "title": "S", 
      "GlossList": { 
       "GlossEntry": { 
        "ID": "SGML", 
        "SortAs": "SGML", 
        "GlossTerm": "Standard Generalized Markup Language", 
        "Acronym": "SGML", 
        "Abbrev": "ISO 8879:1986", 
        "GlossDef": { 
         "para": "A meta-markup language, used to create markup languages such as DocBook.", 
         "GlossSeeAlso": ["GML", "XML"] 
        }, 
        "GlossSee": "markup" 
       } 
      } 
     } 
    } 
} 

這是一個JSON應該如何看,

查爾斯所述對象{}陣列[] ,這是一個方便的學習JSON的備忘單

object {} {成員} 構件 對 對,成員 字符串:值 陣列 [] [元素] 元件 值 值,元件 字符串 號碼 對象 陣列 真 假 空