我正在开发一个应用程序,我在其中使用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的新手。 所以,任何人都可以告诉我们有没有办法提取这个纬度和longitde信息并将其存储在整数变量中。 我曾经声明JSONObject,但它在这里不起作用。我不知道为什么?我无法在我的代码中使用JSONArray或JSONObect。它告诉我一个错误。在我这样做的类中没有邮件功能。这个类即文件已被其他一些.java文件调用。我的应用程序中有多个窗口。 请帮忙。
答案 0 :(得分: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
答案 1 :(得分:0)
该字符串中最外面的字符是方括号,所以你没有处理JSON对象,你有一个JSON数组。
你说你在其他情况下使用了JSONObject
。 JSONObject
用于对象(以{
开头)。由于这里有一个数组,你想改用JSONArray
。
从此字符串创建JSONArray
后,在其上调用getJSONObject(0)
将为数组的第一个元素(实际上包含示例中的数据)提供JSONObject
已发布)。假设您发布的结构,您需要执行以下操作:
JSONArray outerArray = new JSONArray(Result);
JSONObject nodeObject = outerArray.getJSONObject(0);
之后,您可以像nodeObject
一样使用JSONObject
。