2010-12-27 11 views
2

私は配列やsingleobjectsまたは変数をデシリアライズする方法を知っているこのjsonを辞書またはキーバリューペアにデシリアライズする方法は?

[{"Key":{"id":0, "Name":"an Object"}, "Value":true}, 
{"Key":{"id":0, "Name":"an Object"}, "Value":true}] 

のようなJSONオブジェクトをデシリアライズする必要があります。私は辞書については青いです。

することは、私は、アレイ

NetworkEvent n = (NetworkEvent) evt; 
byte[] data = (byte[]) n.getMetaData(); 

AnObject[] anObject= null; 
try { 
    JSONArray json = new JSONArray(new String(data, "UTF-8")); 
    anObject= AnObject.getAnObjects(json); 
} catch (Exception ex) { 
    ex.printStackTrace(); 
}  

に最終的なコードソリューションを読み取るために、以下の使用しています:

 Object[] objects= new Object[json.length()]; 
     for (int i = 0; i < json.length(); ++i) { 

      Key key= null; 
      Value value = null; 
      try { 
       JSONObject keyValuePair = json.getJSONObject(i); 
       key= Key.getKey(keyValuePair.getJSONObject("Key")); 
       value= keyValuePair.getBoolean("Value"); 
      } catch (JSONException ex) { 
       ex.printStackTrace(); 
      } 

      Object object= new object(); 
      object.setKey(key); 
      object.setValue(value); 

      Objects[i] = object; 
     } 
     return objects; 

答えて

5

JSONオブジェクトはありません。これはJSONオブジェクトの配列なので、現在のコードが機能するはずです。

あなたの「問題」は間違った用語を使用していると思います。

これは属性または名前/値のペアである:

"id":0 

これはオブジェクトである:

{"id":0, "Name":"an Object"} 

これも目的である。

{"Key":{"id":0, "Name":"an Object"}, "Value":true} 

これは配列であります(オブジェクトの)

[{"Key":{"id":0, "Name":"an Object"}, "Value":true}, 
{"Key":{"id":0, "Name":"an Object"}, "Value":true}] 

詳細については、json.org siteを参照してください。

+0

に見えます:) –

0

Jacksonライブラリを試してみてください。

+0

私はjson.orgを使用しています - プロジェクトのこの段階でのライブラリの変更はオプションではありません。しかし、それは多くのことを明確にした偉大な図書館 –

関連する問題