2

我正在开发一个应用程序,在该应用程序中我使用 GET REST 调用来获取一些特定节点,这些节点返回给我以下 json 格式的节点:

[

   {

    "nodeId": "30",

    "datasetId": "2",

    "localId": "30",
    "datasetName": "Optimal Travel Route",
    "nodeName": "Location30",
    "nodeDesc": "Find the optimal travel route using travelling salesman problem  ",
    "nodeStatus": "Private",
    "gpsLat": "8.233240",
    "gpsLong": "15.029300",
    "addedBy": "internIITD",
    "addedOn": "2012-06-29 11:08:28",
    "updatedOn": "2012-06-29 11:08:28"
  }

]

它们不是换行符。我在此处添加以使其可读。我这样做是为了将其转换为字符串。:

     BufferedReader in = new BufferedReader(new InputStreamReader(
                                      httpCon.getInputStream()));

              String inputLine;
              StringBuilder sb = new StringBuilder();
              while ((inputLine = in.readLine()) != null) {
                  sb.append(inputLine);
                      System.out.println(inputLine);
               }
              String Result;
              Result=sb.toString();
              System.out.println("result:"+Result);

我想提取满足特定要求的节点的经度和纬度。我在 NetBeans 7.1.2 工作。我是 JAVA 的新手。 所以,谁能告诉是否有任何方法可以提取此纬度和经度信息并将其存储在整数变量中。 我曾经声明 JSONObject 但它在这里不起作用。我不知道为什么?我无法在我的代码中使用 JSONArray 或 JSONObect。它向我显示一个错误。在我正在执行此操作的类中没有邮件功能。此类 ie 文件已被其他一些 .java 文件调用。我的应用程序中有多个窗口。请帮忙。

4

2 回答 2

1

这将是一个解决方案:

String jsonSource = /* your json string */;
JSONArray array = new JSONArray(jsonSource);
for (int i = 0; i < array.length(); i++) {
    JSONObject firstObject = (JSONObject) array.get(i);
    System.out.println("Lat is:  " + firstObject.getDouble("gpsLat"));
    System.out.println("Long is: " + firstObject.getDouble("gpsLong"));
}

这将打印:

Lat is:  8.23324
Long is: 15.0293
于 2012-07-04T18:10:14.927 回答
0

该字符串中最外层的字符是方括号,因此您不是在处理 JSON 对象,而是有一个 JSON 数组。

你说你JSONObject在其他情况下使用过。JSONObject用于对象(以 a 开头{)。由于您在这里拥有的是一个数组,因此您想使用它JSONArray

从该字符串创建 a 后JSONArray,调用getJSONObject(0)它会为您JSONObject获取数组的第一个元素(实际上包含您发布的示例中的数据)。假设您发布的结构,您需要执行以下操作:

JSONArray outerArray = new JSONArray(Result);
JSONObject nodeObject = outerArray.getJSONObject(0);

之后,您可以nodeObject像其他任何JSONObject.

于 2012-07-04T17:41:42.823 回答