我正在制作一个从Google Maps API获取Json距离矩阵的程序。到目前为止我编写的程序可以得到json,如下所示
{
"destination_addresses" : [
"Paris, France",
"Toulon, France",
"Nantes, France",
"Marseille, France"
],
"origin_addresses" : [
"Paris, France",
"Toulon, France",
"Nantes, France",
"Marseille, France"
],
"rows" : [
{
"elements" : [
{
"distance" : {
"text" : "1 m",
"value" : 0
},
"duration" : {
"text" : "1 min",
"value" : 0
},
"status" : "OK"
},
{
"distance" : {
"text" : "839 km",
"value" : 838906
},
"duration" : {
"text" : "7 hours 21 mins",
"value" : 26476
},
"status" : "OK"
},
{
"distance" : {
"text" : "384 km",
"value" : 384421
},
"duration" : {
"text" : "3 hours 34 mins",
"value" : 12823
},
"status" : "OK"
},
{
"distance" : {
"text" : "774 km",
"value" : 774398
},
"duration" : {
"text" : "6 hours 48 mins",
"value" : 24490
},
"status" : "OK"
}
]
},
现在我要做的是创建一个距离矩阵
[ Paris Toulon Nantes Marseille ]
[Paris 0 838906 384421 774398 ]
[Toulon value 0 value value]
[Nantes value value 0 value]
[Marseille value value value 0 ]
**这些值代表城市之间的距离。
(当然是java形式)以后我将用它来解决TSP。我需要来自Elements的值 - >距离 - >值。任何帮助,将不胜感激。提前谢谢。
答案 0 :(得分:1)
您可以将org.codehaus.jettison.json.JSONArray用于相同的(Download jar)。
示例代码:
JSONObject json = new JSONObject(result_string);
JSONArray rows = json .getJSONArray("rows");
为TCP问题创建距离矩阵:
您可以使用以下代码:
JSONObject json1 = new JSONObject(json);
String places[] ={"Paris" , "Toulon" , "Nantes" , "Marseille" };
String[][] result=new String[places.length][places.length];
JSONArray rows = json1.getJSONArray("rows");
//JSONObject[] elements=new JSONObject[places.length];
for (int i = 0; i < rows.length(); i++) {
JSONObject obj=rows.getJSONObject(i);
JSONArray elements=obj.getJSONArray("elements");
for (int j = 0; j < elements.length(); j++) {
JSONObject elem=elements.getJSONObject(j);
JSONObject distance = elem.getJSONObject("distance");
result[i][j]=distance.getString("value");
}
}
for (int i = 0; i < result.length; i++) {
String row[]=result[i];
for (int j = 0; j < row.length; j++) {
System.out.print(" " +row[j] + " , ");
}
System.out.println();
}
像这样你可以获得json字符串的值。
答案 1 :(得分:0)
使用JSON时,我们通常使用库来使其更容易,其他人已经完成了解析所有信息的艰苦工作。
GSON是一个https://code.google.com/p/google-gson/,如果你环顾四周,还有很多其他人。
一旦你有了一个库,给它你的json然后你可以开始操纵它。你将能够获得行 - &gt;元素 - &gt;持续时间 - &gt;文字很容易。
这应该是您的开始:http://www.javacreed.com/simple-gson-example/
从那里你应该编写代码来获取你的GSON并放入一个数据结构,这样就可以像二叉树或类似的东西一样轻松地工作。
记住图书馆是你的朋友。
答案 2 :(得分:0)
您可以使用Java Api for JSON。
您可以从:http://www.oracle.com/technetwork/articles/java/json-1973242.html
开始