2011-07-13 58 views
-1

字符串数组我在遇到此JSON反序列化的烦恼:JSON来使用GSON

[{"categorium": 
    {"created_at":"2011-06-09T08:57:41Z","c1":"rete stradale","updated_at":"2011-06-09T08:57:41Z","id":1}}, 
    {"categorium":{"created_at":"2011-06-09T13:50:29Z","c1":"servizi pubblici","updated_at":"2011-06-09T13:50:29Z","id":2}}, 
    {"categorium":{"created_at":"2011-06-09T13:50:37Z","c1":"illuminazione","updated_at":"2011-06-09T13:50:37Z","id":3}}, 
    {"categorium":{"created_at":"2011-06-09T13:50:46Z","c1":"inquinamento","updated_at":"2011-06-09T13:50:46Z","id":4}} 
] 

我如何可以推断所有的“C1”的属性,所以我可以返回他们的字符串数组?

* UPDATE:解决方案*

public class getElements { 

String [] getEl (String url) throws ClientProtocolException, IOException { 

    Categoria c = null; 
    Categoria[] cArray = null; 
    String [] c1Array = null; 
    HttpClient client = new DefaultHttpClient(); 
    HttpGet request = new HttpGet("http://10.0.2.2:3000/"+url); 

    HttpResponse response = client.execute(request); 
    HttpEntity entity = response.getEntity(); 
    String stringa = "{\"categorium\":{\"created_at\":\"2011-06-09T08:57:41Z\",\"c1\":\"rete stradale\",\"updated_at\":\"2011-06-09T08:57:41Z\",\"id\":1}}"; 

    Gson json=new Gson(); 
     try{ 
      cArray=json.fromJson(stringa, Categoria[].class); 
      Log.i("ELEMENTO", ""+cArray); 
     }catch(JsonParseException e){ 
      Log.i("error","JsonParseException"); 
     } 

     c1Array = new String[cArray.length]; 
     for (int i=0; i<cArray.length; i++) { 
      c1Array[i] = cArray[i].c1; 
     } 

    return c1Array; 


} 
} 

Categorium类:

public class Categoria { 
    public String created_at; 
    public String c1; 
    public String updated_at; 
    public int id; 

    public Categoria() { 
     this.created_at = ""; 
     this.c1=""; 
     this.updated_at = ""; 
     this.id = 0; 
    } 

} 
+0

为什么不能读取所有Categoria对象,然后手动创建一个简单循环中的c1元素数组? – bezmax

+0

我如何阅读所有这些内容?随着我写的代码,我只拿一个c1,对吧?顺便说一句... logcat给我一个JsonParseException:“entity.toString”是在字符串类型中获取Json的正确方法? –

+0

啊,现在我明白了:) – bezmax

回答

0

反序列化数组使用此代码:

Categorium[] cArray = null; 
cArray = gson.fromJson(stringa, Categorium[].class); 

然后让所有的C1的:

String[] c1Array = new String[cArray.length]; 
for (int i=0; i<cArray.length; i++) { 
    c1Array[i] = cArray[i].c1; 
}