如何在java中使用JSON输出

时间:2014-01-07 06:25:41

标签: java json algorithm traveling-salesman

我正在制作一个从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的值 - >距离 - >值。任何帮助,将不胜感激。提前谢谢。

3 个答案:

答案 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

开始