2016-05-05 8 views
0

JSONオブジェクトのキー値に基づいてすべての値を取得したい。ここjavaハッシュマップでJSONオブジェクトを使用する

は私のサンプルJSONだ:

[{ 
    "zip":544, 
    "type":"UNIQUE", 
    "primary_city":"Holtsville", 
    "acceptable_cities":"", 
    "unacceptable_cities":"Irs Service Center", 
    "state":"NY", 
    "county":"Suffolk County", 
    "timezone":"America/New_York", 
    "area_codes":"631", 
    "latitude":40.81, 
    "longitude":-73.04, 
    "world_region":"NA", 
    "country":"US", 
    "decommissioned":0, 
    "estimated_population":0, 
    "notes":"" 
}, 
{ 
    "zip":601, 
    "type":"STANDARD", 
    "primary_city":"Adjuntas", 
    "acceptable_cities":"", 
    "unacceptable_cities":"Colinas Del Gigante, Jard De Adjuntas, Urb San Joaquin", 
    "state":"PR", 
    "county":"Adjuntas", 
    "timezone":"America/Puerto_Rico", 
    "area_codes":"787,939", 
    "latitude":18.16, 
    "longitude":-66.72, 
    "world_region":"NA", 
    "country":"US", 
    "decommissioned":0, 
    "estimated_population":0, 
    "notes":"" 
}] 

だから、キーとしての私の郵便番号に基づいて、私は他のすべての値を取得します。

私は、単一のキーと値のペアを持つJSONオブジェクトに対して同じことを試しましたが、上記のJSONオブジェクトに対してこれを行う方法はわかりません。

json : {"A":"A1","B":"B1","C":"C1"} 
map : A1 

それを行う方法の任意の提案:ここ

は、単一のキーと値のペアのための私の成功した実行中のコード

import java.util.HashMap; 
import java.util.Iterator; 

import org.json.JSONObject; 

public class map { 

    public static void main(String[] args) { 
     String t = "{\"A\":\"A1\",\"B\":\"B1\",\"C\":\"C1\"}"; 

     HashMap<String, String> map = new HashMap<String, String>(); 
     JSONObject jObject = new JSONObject(t); 
     Iterator<?> keys = jObject.keys(); 

     while(keys.hasNext()){ 
      String key = (String)keys.next(); 
      String value = jObject.getString(key); 
      map.put(key, value); 
     } 

     System.out.println("json : "+jObject); 
     System.out.println("map : "+map.get("A")); 

    } 

} 

出力ですか?

いくつかの以前の回答がありましたが、どれもこの問題に対処していませんでしたか?

+0

はJSONオブジェクトの配列ですか? –

+0

はい.. JSONを私の質問で編集して、より明瞭にしました – x0v

+0

Pls。私の答えを確認してください。 –

答えて

1

このようなことができます。ループの終わりに、マップはzipからJSONObjectへのマッピングになります。

import org.json.JSONArray; 
import org.json.JSONObject; 

import java.util.HashMap; 
import java.util.Map; 

public class Main { 

    public static void main(String[] args) { 
     String json = "[{\n" + 
       " \"zip\":544,\n" + 
       " \"type\":\"UNIQUE\",\n" + 
       " \"primary_city\":\"Holtsville\",\n" + 
       " \"acceptable_cities\":\"\",\n" + 
       " \"unacceptable_cities\":\"Irs Service Center\",\n" + 
       " \"state\":\"NY\",\n" + 
       " \"county\":\"Suffolk County\",\n" + 
       " \"timezone\":\"America/New_York\",\n" + 
       " \"area_codes\":\"631\",\n" + 
       " \"latitude\":40.81,\n" + 
       " \"longitude\":-73.04,\n" + 
       " \"world_region\":\"NA\",\n" + 
       " \"country\":\"US\",\n" + 
       " \"decommissioned\":0,\n" + 
       " \"estimated_population\":0,\n" + 
       " \"notes\":\"\"\n" + 
       " },\n" + 
       " {\n" + 
       " \"zip\":601,\n" + 
       " \"type\":\"STANDARD\",\n" + 
       " \"primary_city\":\"Adjuntas\",\n" + 
       " \"acceptable_cities\":\"\",\n" + 
       " \"unacceptable_cities\":\"Colinas Del Gigante, Jard De Adjuntas, Urb San Joaquin\",\n" + 
       " \"state\":\"PR\",\n" + 
       " \"county\":\"Adjuntas\",\n" + 
       " \"timezone\":\"America/Puerto_Rico\",\n" + 
       " \"area_codes\":\"787,939\",\n" + 
       " \"latitude\":18.16,\n" + 
       " \"longitude\":-66.72,\n" + 
       " \"world_region\":\"NA\",\n" + 
       " \"country\":\"US\",\n" + 
       " \"decommissioned\":0,\n" + 
       " \"estimated_population\":0,\n" + 
       " \"notes\":\"\"\n" + 
       " }]"; 
     Map<Integer, JSONObject> map = new HashMap<>(); 
     JSONArray array = new JSONArray(json); 
     for (int i = 0; i < array.length(); i++) { 
      JSONObject jsonObject = array.getJSONObject(i); 
      map.put(jsonObject.getInt("zip"), jsonObject); 
     } 


    } 
} 
+0

ありがとうございます、あなたのコードにちょっとした修正があり、代わりに "i"を使用してください最後の2行目は0です。 – x0v

+0

編集されました。ありがとう。 –

+0

あなたのコードで使用したこの美しい書式設定された文字列に私の配列全体をどのように変換するのですか?それは膨大なデータなので、私は手動でやりたいとは思わない。 – x0v

関連する問題