2016-07-13 5 views
2

私はJSON文字列のような種類がいる:GSONを使用してJava 2次元配列にjsonオブジェクトの配列を解析するにはどうすればよいですか?

[{ 
    "id": 3, 
    "city": "Ilmenau", 
    "floor": null, 
    "housenumber": "35", 
    "streetname": "Blumenstraße", 
    "zip": "98693" 
}, { 
    "id": 4, 
    "city": "Berlin", 
    "floor": null, 
    "housenumber": "54", 
    "streetname": "Bogdansplatz", 
    "zip": "194354" 
}] 

を、私はそれは次のようになります。2次元配列に解析する必要があります enter image description here 私はGSONのJavaライブラリを使用して、それを作ることができますか? は今、私は唯一のリストを返すコードのこの作品、書かれている:

String s=getJson("SELECT * FROM address;"); 

     JsonParser jsonParser = new JsonParser(); 
     JsonObject jo = (JsonObject)jsonParser.parse(s); 
     JsonArray jsonArr = jo.getAsJsonArray("array"); 
     //jsonArr. 
     Gson googleJson = new Gson(); 
     ArrayList jsonObjList = googleJson.fromJson(jsonArr, ArrayList.class); 
     System.out.println("List size is : "+jsonObjList.size()); 
     System.out.println("List Elements are : "+jsonObjList.toString()); 

をしかし、上記のコードは、配列のJSONオブジェクトではなく、私が上に示している文字列で動作します。

答えて

0

次のことを試してください可能性があり、結果を参照してください。はい、私はそれは良いアイデアだと思いますが、SQL要求の後、私は様々なフィールド名を取得することができますが、あなたのコードでは、彼らがすでに運命づけされている

// String 's' holds the JSON 

JsonParser jsonParser = new JsonParser(); 
JsonArray jsonArray = (JsonArray) jsonParser.parse(s); 

// this object is used to get the keys 
JsonObject firstJsonObject = jsonArray.get(0).getAsJsonObject();   
Set<java.util.Map.Entry<String, JsonElement>> entrySet = firstJsonObject.entrySet(); 

// declare two dimensional array 
Object[][] array = new Object[entrySet.size()][jsonArray.size() + 1]; 

// the first column of the two-dimensional array is populated 
Iterator<java.util.Map.Entry<String, JsonElement>> itr = entrySet.iterator(); 
for (int i = 0; itr.hasNext(); i++) { 
    array[i][0] = itr.next().getKey(); 
} 

// the rest of the columns are populated 
for (int i = 0; i < jsonArray.size(); i++) { 
    JsonObject obj = (JsonObject) jsonArray.get(i); 
    for (int j = 0; j < array.length; j++) { 
     String key = array[j][0].toString(); 
     JsonElement value = obj.get(key); 
     array[j][i + 1] = value instanceof JsonNull ? null : value.getAsString(); 
    } 

} 
// now the two dimensional array is fully populated 
+0

を。だから、予定されたフィールド名なしで配列を作ることは可能でしょうか? –

+0

もちろんコードは正常に動作します –

+0

こんにちは@BogdanLashkovは私の編集された答えを見ていただけますか? –

関連する問題