¿Cómo extraigo valor de Json?

Recibo una cadena de respuestas del servidor como a continuación

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

Quiero obtener el valor de First name. ¿Cómo puedo hacer eso? Gracias por adelantado.

ver este código de lo que soy utilizado en mi aplicación

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

Recuperé así

 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 ); 

Use un analizador JSON. Hay muchos analizadores JSON escritos en Java.

http://www.json.org/

Mire en la sección de Java y encuentre uno que le guste.

Pegando mi código aquí, esto debería ayudar. Muestra el paquete que se puede usar.

 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); } } 

Si no le importa agregar una dependencia, puede usar JsonPath .

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

“$” especifica la raíz de la cadena raw json y luego solo especifica la ruta al campo que desea. Esto siempre devolverá una cadena. Tendrás que hacer cualquier lanzamiento tú mismo.

Tenga en cuenta que lanzará una PathNotFoundException en tiempo de ejecución si la ruta especificada no existe.