gpt4 book ai didi

java - 如何从 JSON 字符串中获取特定值

转载 作者:行者123 更新时间:2023-11-30 06:11:56 27 4
gpt4 key购买 nike

//Open url and fetch JSON data
String s = "MY_URL_HERE";
URL url = new URL(s);
Scanner scan = new Scanner(url.openStream());
String str = new String();
while (scan.hasNext())
{
str += scan.nextLine();
}
scan.close();

System.out.println(str);

str 将打印如下字符串:

{"coord":{"lon":-80.25,"lat":43.55},"weather":[{"id":800,"main":"Clear","description":"Sky is Clear","icon"...ect

我正在使用 json_simple-1.1.jar

我如何实际使用这个字符串来提取我选择的值?如果我想提取“描述”或“天气”。

我试过以下片段:

https://code.google.com/p/json-simple/wiki/DecodingExamples

这些对我不起作用,我得到一个错误

org.json.simple.JSONObject cannot be cast to org.json.simple.JSONArray

最佳答案

您的字符串不是 ant json 数组表示,而是 json 对象本身。这就是 org.json.simple.JSONObject cannot be cast to org.json.simple.JSONArray 所描述的错误。您链接中的示例描述了一个数组,该数组的每个元素都是一个对象:

考虑 Jackson非常方便将 Java 对象转换为 JSON 的库

下面代表一个数组,数组的每个元素都是一个对象:

[
{
color: "red",
value: "#f00"
},
{
color: "green",
value: "#0f0"
}
]

or

[
{
"color": "red",
"value": "#f00"
},
{
"color": "green",
"value": "#0f0"
}
]

下面代表对象

{
color: "red",
value: "#f00"
}

or

{
"color": "red",
"value": "#f00"
}

参见 here对于json字符串的不同表示

使用 jackson 库的代码示例

import java.io.IOException;

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;


public class TestString {

public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException {

String s="{\"coord\":{\"lon\":-80.25,\"lat\":43.55},\"weather\":[{\"id\":800,\"main\":\"Clear\",\"description\":\"Sky is Clear\"}]}";
//String s="[{\"coord\":\"test\",\"lon\":-80.25}]";
ObjectMapper mapper = new ObjectMapper();
Object obj = mapper.readValue(s, Object.class );
System.out.println("terst"+ obj );
}

}

关于java - 如何从 JSON 字符串中获取特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33441153/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com