2015-11-05 92 views
-1

我想解析JSON,但它給了我例外。如何解析JSON使用hardocoded值

我預計硬編碼爲JSON字符串這樣

String stringJSON="[{\"value1\":\"ABC567123\",\"end_at\":\"08/28/2014 09:10:00\",\"start_at\":\"04/25/2016 09:20:00\"}]"; 

有效的JSON是這樣

[ 
{ 
    "value1": "ABC567123", 
    "end_at": "08/28/2014 09:10:00", 
    "start_at": "04/25/2016 09:20:00" 
} 
] 

現在我試圖解析JSON像下面並得到例外。

JSONObject responseObJ; 
    try { 
     responseObJ= new JSONObject(stringJSON); //error here 
     if(responseObJ!=null){ 
      //do something 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
     return null; 
    } 

請建議該怎麼做? //將其硬編碼爲臨時--json結果預計完全相同

+2

你的JSON響應開始JSONArray不JSONObject的,這就是爲什麼它給錯誤 –

+1

雅從stringJSON刪除[]。 .. –

回答

3

stringJSON是包含JSONArray代替JSONObject在JSON根元素串。

從開始和結束字符串根據當前的代碼或者多個的JSONObject的

要麼刪除[]在JSONArray可用,那麼獲得JSONArraystringJSON

JSONArray responseObJ= new JSONArray(stringJSON); 
+0

謝謝@ρяσѕρєяK –

2

是的,如您所說的有效json,但它的JsonArray而不是JsonObject。 只需從開始和結束中刪除[]。

您的字符串應該是

String stringJSON="{\"value1\":\"ABC567123\",\"end_at\":\"08/28/2014 09:10:00\",\"start_at\":\"04/25/2016 09:20:00\"}"; 

,或者如果你想與當前字符串的工作,然後使用JsonArray代替JsonObject

JSONArray responseObJ= new JSONArray(stringJSON); 
+1

感謝您的快速回復@Ravi Rupareliya –

+0

歡迎@dev_android –

1

你可以嘗試ScriptSerializer類的反序列化的方法?像:

 var scriptSerializer = new JavaScriptSerializer(); 
     var obj = scriptSerializer.Deserialize<Object>(str); 
+0

感謝您寶貴的建議@rorfun –

+1

這必須是評論! ! – Piyush

3

[]他們表明,它有它的對象數組,所以你可以這樣

JSONArray jsonArray= new JSONArray(stringJSON); 

for (int i = 0; i < jsonArray.length(); i++) { 
    JSONObject jsonObject = jObject.getJSONObject(i); 

    // here you can get the values of objects stored in the jsonObject 
} 

你的情況,你只有一個對象,所以你不必檢索使用循環,而不是你能得到它喜歡這個

JSONArray jsonArray= new JSONArray(stringJSON); 
JSONObject jsonObject = jObject.getJSONObject(0);