新人求助,这一段JSON如何用java解析?

 {
  "results": [{
    "location": {
      "id": "WX4FBXXFKE4F",
      "name": "北京",
      "country": "CN",
      "path": "北京,北京,中国",
      "timezone": "Asia/Shanghai",
      "timezone_offset": "+08:00"
    },
    "daily": [{                         //返回指定days天数的结果
      "date": "2015-09-20",             //日期
      "text_day": "多云",               //白天天气现象文字
      "code_day": "4",                  //白天天气现象代码
      "text_night": "晴",               //晚间天气现象文字
      "code_night": "0",                //晚间天气现象代码
      "high": "26",                     //当天最高温度
      "low": "17",                      //当天最低温度
      "precip": "0",                    //降水概率,范围0~100,单位百分比
      "wind_direction": "",             //风向文字
      "wind_direction_degree": "255",   //风向角度,范围0~360
      "wind_speed": "9.66",             //风速,单位km/h(当unit=c时)、mph(当unit=f时)
      "wind_scale": ""                  //风力等级
    }, {
      "date": "2015-09-21",
      "text_day": "晴",
      "code_day": "0",
      "text_night": "晴",
      "code_night": "0",
      "high": "27",
      "low": "17",
      "precip": "0",
      "wind_direction": "",
      "wind_direction_degree": "157",
      "wind_speed": "17.7",
      "wind_scale": "3"
    }, {
    }],
    "last_update": "2015-09-20T18:00:00+08:00" //数据更新时间(该城市的本地时间)
  }]
}

如果我想得到name:北京 该怎么写java代码呢?

package com.six;
import java.util.List;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

public class JSONParse {

    private static String jsonString = "{\"results\":[{\"location\":{\"id\":\"WX4FBXXFKE4F\",\"name\":\"北京\",\"country\":\"CN\",\"path\":\"北京,北京,中国\",\"timezone\":\"Asia/Shanghai\",\"timezone_offset\":\"+08:00\"},\"daily\":[{\"date\":\"2015-09-20\",\"text_day\":\"多云\",\"code_day\":\"4\",\"text_night\":\"晴\",\"code_night\":\"0\",\"high\":\"26\",\"low\":\"17\",\"precip\":\"0\",\"wind_direction\":\"\",\"wind_direction_degree\":\"255\",\"wind_speed\":\"9.66\",\"wind_scale\":\"\"},{\"date\":\"2015-09-21\",\"text_day\":\"晴\",\"code_day\":\"0\",\"text_night\":\"晴\",\"code_night\":\"0\",\"high\":\"27\",\"low\":\"17\",\"precip\":\"0\",\"wind_direction\":\"\",\"wind_direction_degree\":\"157\",\"wind_speed\":\"17.7\",\"wind_scale\":\"3\"},{}],\"last_update\":\"2015-09-20T18:00:00+08:00\"}]}";

    public static void main(String[] args) {
        JSONObject json = JSON.parseObject(jsonString);
        JSONArray jsonArray = json.getJSONArray("results");
        List<JSONObject> lists = JSONArray.parseArray(jsonArray.toJSONString(), JSONObject.class);
        for (JSONObject item : lists) {
            for (String key : item.keySet()) {
                if (key.equals("location")) {
                    JSONObject location_json = item.getJSONObject("location");
                    // print the value of name
                    if (location_json.containsKey("name")) {
                        System.out.println(location_json.getString("name"));
                    }
                    return;
                }
            }
        }
    }
}

maven dependency
如果不是使用maven编译项目,请手动引入com.alibaba.fastjson依赖包

<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.7</version>
</dependency>

定义一个结构相同的类,用gson包解析成对象,或者用JsonObject转

用fastjson,jackson,net.sf.json都可以。

我举个jackson的例子吧:
import org.codehaus.jackson.map.ObjectMapper;
import java.io.IOException;
import java.util.Map;

/**

  • JacksonTest *
  • @author littlehow
  • @time 2016-07-25 13:37 */ public class JacksonTest { static ObjectMapper mapper = new ObjectMapper(); public static void main(String[] args) { String json = "{\"name\": \"littlehow\",\"age\": 16}"; try { System.out.println(json); Map map = mapper.readValue(json, Map.class); System.out.println(map); } catch (IOException e) { e.printStackTrace(); } } }

fastjson的例子:
import com.alibaba.fastjson.JSONObject;
/**

  • FastjsonTest *
  • @author littlehow
  • @time 2016-07-25 13:47 */ public class FastjsonTest { public static void main(String[] args) { String msg = "{\"name\":\"littlehow\", \"age\":18}"; JSONObject json = JSONObject.parseObject(msg); Test sb = JSONObject.toJavaObject(json, Test.class); System.out.println(sb.getName()); } }

class Test{
private String name;
private String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}

其他json就不一一举例了,希望对你有帮助

定义数据结构也是可以的,但是使用jsonObject是万能的可变数据结构

使用这个在线json转java实体网站就知道
http://json2java.azurewebsites.net/

或者在ANDROID STUDIO下载GSON FORMAT

二楼解析方式正解,参考就行