2

以下のjson形式でノードを返すいくつかの特定のノードを取得するためにGET REST呼び出しを使用しているアプリケーションを開発しています:

[

   {

    "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オブジェクト用です(で始まる{)。ここにあるのは配列なので、JSONArray代わりに使用します。

この文字列からを作成した後、それをJSONArray呼び出すと、配列の最初の要素(投稿した例のデータが実際に含まれているもの)のが取得されます。投稿した構造を想定すると、次のようなことを行う必要があります。getJSONObject(0)JSONObject

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

その後、nodeObject他のと同じように作業できますJSONObject

于 2012-07-04T17:41:42.823 に答える