[英]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屬性是一個數組和一個對象。
查看JSONObject和JSONArray的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.