簡體   English   中英

在Android中反序列化JSON字符串

[英]Deserializing JSON string in android

我有如下讀取的JSON字符串

{   "Status":"Clear",    "Class": [{  <br>
        {"name":"personA", "available" : 1}, <br>
       {"name":"personB", "available" : 0}, <br>
       {"name":"personC", "available" : 0}, <br>
        {"name":"personD", "available" : 1} <br>
         }] }

如何反序列化上面的JSON字符串?

我想到了使用JSONObject將整個JSON字符串放入其中的想法,但不知道如何獲取對象的arraylist(Class對象的列表)並分配給arraylist <Class>。

指導和幫助深表感謝。

更新時間

解決和解決方案顯示

我已經解決了這個問題,但是我想我必須解釋如何以及為什么使用這種解決方案。

因此,為了進一步解釋我的問題,這是一個json字符串,最初是一個對象,該對象已被序列化並從Web服務發送到我的應用程序。

原始對象是這樣的:

 public class StatusJson
     {
         public String Status { get; set; }
         public List<Class> Class { get; set; }
     }

所以我要做的就是在android中聲明一個完全相同的類,然后使用此代碼

statusJson  statusJSON=g.fromJson(JSonString,StatusJson.class);

它將自動將json字符串解析為完全相同的類格式。

如果您直接發送像我這樣的JSON序列化類,希望對您也有幫助。

我建議您檢查Gson庫

您可以創建帶有注釋的類

private class ClassObj {
@SerializedName("personA") 
private final String personA;
....
}

然后

ClassObj object = gson.fromJson(jsonString, ClassObj.class);

它可以是復雜的對象,其中包含其他gson對象或Collection。 嘗試。

我相信這是無效的傑森。 您的class屬性是一個數組和一個對象。

查看JSONObjectJSONArray的API。

您應該能夠從那里弄清楚。 您只需從字符串中創建一個JSONObject即可:

例如 JSONObject jsonAsObj = new JSONObject(my_json_string) ;

然后使用JSONArray classArray = jsonAsObject.getJSONArray("Class"); 得到你的數組...

至於將其轉換為ArrayList,您需要創建類型並遍歷JSONArray並從中創建對象,然后將它們添加到ArrayList中。 或者,您可以查看另一個幫助程序庫,例如GSON

您需要使用GSON庫,例如:

@SerializedName(“ studentName”)公共字符串名稱;

有必要在上述第一(thealeksandr)的答案中添加一些缺少的功能:

 Gson gson = new GsonBuilder().create();

現在,您可以在上述ClassObj object = gson.fromJson(jsonString, ClassObj.class);使用此實例化對象gson ClassObj object = gson.fromJson(jsonString, ClassObj.class); 為此,只需使用我剛剛演示的Gson庫中的GsonBuilder類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM