Java String到JSON的转换

我正在从String变量的Restful api获取数据,现在我想转换为JSON对象,但是在转换时会引发异常,这是我的问题。这是我的代码:

URL url = new URL("SOME URL");

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn.setRequestMethod("GET");

conn.setRequestProperty("Accept", "application/json");

BufferedReader br = new BufferedReader(new InputStreamReader(

(conn.getInputStream())));

String output;

System.out.println("Output from Server .... \n");

while ((output = br.readLine()) != null) {

System.out.println(output);

}

conn.disconnect();

JSONObject jObject = new JSONObject(output);

String projecname=(String) jObject.get("name");

System.out.print(projecname);

我的字符串包含

 {"data":{"name":"New Product","id":1,"description":"","is_active":true,"parent":{"id":0,"name":"All Projects"}}}

这是我想要在json中使用的字符串,但它向我显示了线程“ main”中的异常

java.lang.NullPointerException

at java.io.StringReader.<init>(Unknown Source)

at org.json.JSONTokener.<init>(JSONTokener.java:83)

at org.json.JSONObject.<init>(JSONObject.java:310)

at Main.main(Main.java:37)

回答:

name是本内的data。您需要按层次分析JSON,以便能够正确获取数据。

JSONObject jObject  = new JSONObject(output); // json

JSONObject data = jObject.getJSONObject("data"); // get data object

String projectname = data.getString("name"); // get the name from data.

注意:本示例使用org.json.JSONObject类而不是org.json.simple.JSONObject


正如“ Matthew”在他正在使用的注释中提到的那样org.json.simple.JSONObject,我在答案中添加了我的注释详细信息。

尝试使用org.json.JSONObject代替。但是,如果您不能更改JSON库,则可以参考此示例,该示例使用与您的JSON库相同的库,并检查如何从其中读取json部分。

提供的链接中的示例:

JSONObject jsonObject = (JSONObject) obj;

String name = (String) jsonObject.get("name");

以上是 Java String到JSON的转换 的全部内容, 来源链接: utcz.com/qa/405778.html

回到顶部