如何从Json中提取值

Bal*_*ban 11 java json

我从服务器获得响应字符串,如下所示

{
  "name": "Json",
  "detail": {
    "first_name": "Json",
    "last_name": "Scott",
    "age": "23"
  },
  "status": "success"
}
Run Code Online (Sandbox Code Playgroud)

我想得到名字的价值.我怎样才能做到这一点?提前致谢.

Bal*_*i.K 11

看到这个代码我在我的应用程序中使用了什么

String data="{'foo':'bar','coolness':2.0, 'altitude':39000, 'pilot':{'firstName':'Buzz','lastName':'Aldrin'}, 'mission':'apollo 11'}";
Run Code Online (Sandbox Code Playgroud)

我这样检索过

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 );
Run Code Online (Sandbox Code Playgroud)

  • 你用的是哪个库? (6认同)

Jas*_*ien 9

使用JSON解析器.有很多用Java编写的JSON解析器.

http://www.json.org/

查看Java部分,找到您喜欢的部分.


use*_*882 9

在这里粘贴我的代码,这应该有所帮助.它显示了可以使用的包装.

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

    }

}
Run Code Online (Sandbox Code Playgroud)


小智 7

如果您不介意添加依赖项,可以使用JsonPath

import com.jayway.jsonpath.JsonPath;

String firstName = JsonPath.read(rawJsonString, "$.detail.first_name");
Run Code Online (Sandbox Code Playgroud)

“$”指定原始 json 字符串的根,然后您只需指定所需字段的路径。这将始终返回一个字符串。你必须自己进行任何选角。

请注意,如果您指定的路径不存在,它将在运行时抛出 PathNotFoundException。