如何解析JSON类型的Object

时间:2015-03-16 00:25:55

标签: java json class

我有一个JSON文件,我不知道如何解析"坐标"的部分,其他已经完成。它似乎是空的,当我试图达到它们时,其他似乎没问题。我猜,坐标部分是城市中定义的另一个类。你能帮我拿到城市的坐标吗?

我将我的城市保存在一个链表中。

 "cities" : [
            {
                "code" : "SCL" ,
                "name" : "Santiago" ,
                "country" : "CL" ,
                "continent" : "South America" ,
                "timezone" : -4 ,
                "coordinates" : {"S" : 33, "W" : 71} ,
                "population" : 6000000 ,
                "region" : 1
            } 




static List<City> allCities = new LinkedList<City>();
static List<Flight> allFlights = new LinkedList<Flight>();
static JSONArray cities;
static JSONArray flights;

FileReader reader = new FileReader("csair.json");
JSONObject CSAirData = (JSONObject) JSONValue.parse(reader);
cities  = (JSONArray) CSAirData.get("cities");
flights  = (JSONArray) CSAirData.get("routes");

1 个答案:

答案 0 :(得分:0)

假设“cities”是变量myVar的属性,就像这样

var myVar = {
  "cities": [
    {
      "code": "SCL",
      "name": "Santiago",
      ...
    }
  ]
};

然后你可以通过

访问“坐标”
myVar.cities[0].coordinates
  • “cities”对应数组
  • 数组中的第一个元素(index = 0)是一个对象
  • 该对象具有名为“coordinates”的属性,该属性引用另一个对象

修改

现在我看到你正在使用Java代码,你只需要将这种语法转换为Java。

我们知道“城市”是JSONArray。

JSONObject city = cities.get(0);  // Get the first city in the array (index = 0)
JSONObject coordinates = city.getJSONObject("coordinates");
int coordinates_s = coordinates.getInt("S");
int coordinates_w = coordinates.getInt("W");