2016-04-16 27 views
0

Hallo Jungs, ich habe eine JSON-String wieJson Parse android

{ 
"Successful": true, 
"Value": "{\"MesajTipi\":1,\"Mesaj\":\"{\\\"Yeni\\\":\\\"Hayır\\\",\\\"Oid\\\":\\\"3d9b81c9-b7b3-4316-8a73-ad4d54ee02a8\\\",\\\"OzelKod\\\":\\\"\\\",\\\"Adet\\\":1,\\\"ProblemTanimi\\\":\\\"999\\\",\\\"HataTespitYeri\\\":\\\"Montajda\\\",\\\"Tekrar\\\":\\\"Evet\\\",\\\"ResmiBildirimNo\\\":\\\"\\\",\\\"Malzeme\\\":\\\"5475ffdb-0bc0-49cb-9186-429c60dbf91b\\\",\\\"HataKodu\\\":\\\"c30df623-496b-4a62-ba16-493bd435ca33\\\",\\\"Tarih\\\":\\\"2016-04-16 10:34:00\\\",\\\"KayitNo\\\":\\\"1600010.2\\\"}\"}" 
} 

I need "Oid" Wert aus dieser Zeichenfolge zu erhalten. Ich versuchte es mit

  Gson gson = new Gson(); 
      JsonParser parse = new JsonParser(); 
      JsonObject jsonobj = (JsonObject) parse.parse(snc); 
      String stroid = jsonobj.get("Oid").toString(); 

zu bekommen, aber es gibt null referance Ausnahme? Irgendeine Idee, wie kann ich den einzigen Oid-Wert erhalten?

bearbeiten

Ich habe bereits versucht How to parse JSON in Java aber noch keine succes

Was ich auf dieser Seite versucht:

String pageName = jsonObj.getJSONObject("Value").getJSONObject("Mesaj").getString("Oid"); 
+1

Mögliche Duplikate von [Wie JSON in Java zu parsen] (http://stackoverflow.com/questions/2591098/how-to-parse-json-in-java) –

Antwort

0

Das Problem ist, weil die zusätzlichen " " im "Value" Abschnitt von JSON, so wird es als String kein Objekt behandelt. Die bessere Lösung ist die Quelle des JSON zu suchen, um zu sehen, warum sie das zusätzliche " " und klar hinzugefügt, aber wenn Sie keinen Zugang zu der Quelle ich folgendes vorschlagen haben:

ersetzen:

String stroid = jsonobj.get("Oid").toString(); 

mit :

String valueString = jsonobj.getString("Value"); 
jsonobj = new JSONObject(valueString); 
String mesagString = jsonobj.getString("Mesaj"); 
jsonobj = new JSONObject(mesagString); 
String stroid = jsonobj.getInt("Oid").toString(); 
+0

Ur der Mann ... tyvm –

1

können sagen, dies ist Ihre JSON

{ 
"success":"ok", 
"test" : [{"id" : "1" ,"name" : "first"}] 
,"RPTF": 
    [{"cats":[{"id" : "1" ,"name" : "first"}, 
       {"id" : "1" ,"name" : "first"}, 
       {"id" : "2" ,"name" : "test"} ] 


    ,"pics" : [{"id" : "12" ,"value" : "description" ,"src" : "http://citygram.ir" ,"visit" : "3" }, 
       {"id" : "10" ,"value" : "description" ,"src" : "http://citygram.ir" ,"visit" : "3" } ] 
    }] 
} 

Methode num ber ein (wenn Sie möchten für den Zugriff auf „Erfolg“)

public String jsonOne(String json, String target) { 

    String result; 
    try { 

     JSONObject jo = new JSONObject(json); 
     result = jo.getString(target); 

    } catch (JSONException e) { 

     return ""; 
    } 
    return result; 
} 

können Sie einfach diese Methode aufrufen, wie diese

jsonOne(String json, "success"); 

Methode Nummer zwei (falls Sie wollen „id“ s innerhalb der für den Zugriff auf "test")

public String[] jsonTwo(String json, String target0, String target1) { 

    String[] result; 
    result = new String[1]; 

    try { 
     JSONObject jo = new JSONObject(json); 
     JSONArray ja = jo.getJSONArray(target0); 

     result = new String[ja.length()]; 
     for (int i = 0; i < ja.length(); i++) { 
      JSONObject jojo = ja.getJSONObject(i); 
      result[i] = jojo.getString(target1); 
     } 

    } catch (JSONException e) { 
    } 
    return result; 
} 

Sie einen Array String auf Anruf erhalten:

jsonTwo(String json, "test", "id"); 

Methode Nummer drei (sagen wir, Sie „Wert“ s in Seite „Bilder“ zugreifen wollen)

public String[] jsonThree(String json, String target0, String target1,String target2) { 

    String[] result; 
    result = new String[1]; 

    try { 
     JSONObject jo = new JSONObject(json); 
     JSONArray ja = jo.getJSONArray(target0); 
     JSONObject jojo=ja.getJSONObject(0); 
     JSONArray jaja=jojo.getJSONArray(target1); 

     result = new String[jaja.length()]; 
     for (int i = 0; i < ja.length(); i++) { 
      JSONObject jojojo = jaja.getJSONObject(i); 
      result[i] = jojojo.getString(target2); 
     } 
    } catch (JSONException e) { 
     toast("Wrong"); 
    } 

    return result; 
} 

auf Abruf:

jsonThree(String json, "RPTF", "pics", "value"); 

Sie können mehr Methoden wie diese schreiben und sie rufen Sie einfach an .