Come estrarre il valore da Json

Sto ricevendo una stringa di risposta dal server come di seguito

{ "name": "Json", "detail": { "first_name": "Json", "last_name": "Scott", "age": "23" }, "status": "success" } 

Voglio ottenere il valore del nome. Come lo posso fare? Grazie in anticipo.

vedi questo codice che cosa sono usato nella mia applicazione

 String data="{'foo':'bar','coolness':2.0, 'altitude':39000, 'pilot':{'firstName':'Buzz','lastName':'Aldrin'}, 'mission':'apollo 11'}"; 

Ho recuperato in questo modo

 JSONObject json = (JSONObject) JSONSerializer.toJSON(data); double coolness = json.getDouble( "coolness" ); int altitude = json.getInt( "altitude" ); JSONObject pilot = json.getJSONObject("pilot"); String firstName = pilot.getString("firstName"); String lastName = pilot.getString("lastName"); System.out.println( "Coolness: " + coolness ); System.out.println( "Altitude: " + altitude ); System.out.println( "Pilot: " + lastName ); 

Usa un parser JSON. Ci sono un sacco di parser JSON scritti in Java.

http://www.json.org/

Guarda sotto la sezione Java e trova quello che ti piace.

Incollando qui il mio codice, questo dovrebbe aiutare. Mostra il pacchetto che può essere utilizzato.

 import org.json.JSONException; import org.json.JSONObject; public class extractingJSON { public static void main(String[] args) throws JSONException { // TODO Auto-generated method stub String jsonStr = "{\"name\":\"SK\",\"arr\":{\"a\":\"1\",\"b\":\"2\"}}"; JSONObject jsonObj = new JSONObject(jsonStr); String name = jsonObj.getString("name"); System.out.println(name); String first = jsonObj.getJSONObject("arr").getString("a"); System.out.println(first); } } 

Se non ti dispiace aggiungere una dipendenza, puoi usare JsonPath .

 import com.jayway.jsonpath.JsonPath; String firstName = JsonPath.read(rawJsonString, "$.detail.first_name"); 

“$” specifica la radice della stringa json non elaborata e quindi basta specificare il percorso del campo desiderato. Questo restituirà sempre una stringa. Dovrai fare qualsiasi casting da solo.

Tieni presente che genererà PathNotFoundException in fase di esecuzione se il percorso specificato non esiste.