gpt4 book ai didi

android - 如何使用 JsonReader 跳过不需要的值?

转载 作者:行者123 更新时间:2023-11-29 01:55:16 25 4
gpt4 key购买 nike

我试图用 JsonReader 解析一个 JSON 文件。我使用 skipvalue() 函数转到下一个键,但解析器没有转到下一个键,而是跳转到文件末尾。

文件看起来像这样:

{
"data":{
"current_condition":[
{
"cloudcover":"100",
"humidity":"74",
"observation_time":"01:28 PM",
"precipMM":"0.4",
"pressure":"1005",
"temp_C":"-3",
"temp_F":"27",
"visibility":"6",
"weatherCode":"326",
"weatherDesc":[
{
"value":"Light snow"
}
],
"weatherIconUrl":[
{
"value":"http:\/\/www.worldweatheronline.com\/images\/wsymbols01_png_64\/wsymbol_0011_light_snow_showers.png"
}
],
"winddir16Point":"NE",
"winddirDegree":"50",
"windspeedKmph":"15",
"windspeedMiles":"9"
}
],
"request":[
{
"query":"Minsk, Belarus",
"type":"City"
}
],
"weather":[
{
"date":"2013-03-20",
"precipMM":"4.4",
"tempMaxC":"-4",
"tempMaxF":"25",
"tempMinC":"-13",
"tempMinF":"10",
"weatherCode":"326",
"weatherDesc":[
{
"value":"Light snow"
}
],
"weatherIconUrl":[
{
"value":"http:\/\/www.worldweatheronline.com\/images\/wsymbols01_png_64\/wsymbol_0011_light_snow_showers.png"
}
],
"winddir16Point":"NE",
"winddirDegree":"40",
"winddirection":"NE",
"windspeedKmph":"17",
"windspeedMiles":"11"
},
{
"date":"2013-03-21",
"precipMM":"0.6",
"tempMaxC":"-5",
"tempMaxF":"23",
"tempMinC":"-15",
"tempMinF":"5",
"weatherCode":"326",
"weatherDesc":[
{
"value":"Light snow"
}
],
"weatherIconUrl":[
{
"value":"http:\/\/www.worldweatheronline.com\/images\/wsymbols01_png_64\/wsymbol_0011_light_snow_showers.png"
}
],
"winddir16Point":"NE",
"winddirDegree":"38",
"winddirection":"NE",
"windspeedKmph":"12",
"windspeedMiles":"7"
},
{
"date":"2013-03-22",
"precipMM":"0.1",
"tempMaxC":"-9",
"tempMaxF":"17",
"tempMinC":"-19",
"tempMinF":"-2",
"weatherCode":"119",
"weatherDesc":[
{
"value":"Cloudy"
}
],
"weatherIconUrl":[
{
"value":"http:\/\/www.worldweatheronline.com\/images\/wsymbols01_png_64\/wsymbol_0003_white_cloud.png"
}
],
"winddir16Point":"NE",
"winddirDegree":"51",
"winddirection":"NE",
"windspeedKmph":"19",
"windspeedMiles":"12"
},
{
"date":"2013-03-23",
"precipMM":"0.0",
"tempMaxC":"-8",
"tempMaxF":"18",
"tempMinC":"-13",
"tempMinF":"8",
"weatherCode":"116",
"weatherDesc":[
{
"value":"Partly Cloudy"
}
],
"weatherIconUrl":[
{
"value":"http:\/\/www.worldweatheronline.com\/images\/wsymbols01_png_64\/wsymbol_0002_sunny_intervals.png"
}
],
"winddir16Point":"NNE",
"winddirDegree":"12",
"winddirection":"NNE",
"windspeedKmph":"16",
"windspeedMiles":"10"
}
]
}
}

这是我的代码:

String json_url = "http://free.worldweatheronline.com/feed/weather.ashx?q="+city+"&format=json&num_of_days="+Integer.toString(days)+"&key=0592d3cc1b151105131103";
JsonReader forecastJsonReader = new JsonReader(new InputStreamReader(getUrlData(json_url)));
forecastJsonReader.beginArray();
while (forecastJsonReader.hasNext()) {
String name = forecastJsonReader.nextName();
if (name.equals("date")) {
Log.d("WEATHER",forecastJsonReader.nextString());
} else if(name.equals("tempMaxC")) {
Log.d("WEATHER",forecastJsonReader.nextString());
} else {
forecastJsonReader.skipValue();
}

}
forecastJsonReader.endObject();
forecastJsonReader.close();

最佳答案

我不认为这是首先使用 jsonreader 解析 json 的正确方法你的 json 以对象而不是数组开头这是您如何解析 json 的示例

主要功能

reader.beginObject();

while (reader.hasNext()) {

String name = reader.nextName();

if (name.equals("data")) {
readData(reader);
} else {
reader.skipValue(); // avoid some unhandle events
}
}

reader.endObject();
reader.close();

读取数据函数

private void readData(JsonReader reader) throws IOException {
reader.beginObject();
while(reader.hasNext()) {
String name = reader.nextName();
if(name.equals("weather")) {
reader.beginArray();
while (reader.hasNext()) {
reader.beginObject();
String objectWeatherName = reader.nextName();
if (objectWeatherName .equals("date")) {
Log.d("WEATHER",reader.nextString());
} else if (objectWeatherName .equals("tempMaxC")) {
Log.d("WEATHER",reader.nextString());
} else {
reader.skipValue();
}
reader.endObject();
}
reader.endArray();
} else {
reader.skipValue();
}

}
reader.endObject();
}

那是如果你想读取位于数据对象中的天气对象中的日期和 tempMaxC,我希望你能理解我的回答,但如果你有任何问题,请随时在评论中提问 :)

关于android - 如何使用 JsonReader 跳过不需要的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15529433/

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