我知道JSONArray
和JSONObject
之間的區別。Android JsonArray和JsonObject反序列化
我對將它們解序列化有疑問。
雖然反序列化對象類型Cluster
的數組,但我可以通過使用fromJson
對象來完成。 相反,在反序列化Topic
類型的對象時,我不得不使用JSONParser
。
有什麼區別?我無法確定何時使用JSONParser
。
FYI的Cluster
類:
package com.example.android_json;
public class Cluster {
public String title;
public String stories;
public String src;
public Cluster()
{
}
public Cluster(String title,String stories,String src)
{
this.title = title;
this.stories = stories;
this.src = src;
}
}
的Topic
類:
package com.example.news_android_mobile_application_cd;
import java.util.ArrayList;
import java.util.List;
import checkdeck.news.ui_services_java_api.rest.model.MiniCluster;
public class Topic {
public Topic()
{
}
public Topic(String TopicID,String TopicName,ArrayList<MiniCluster> miniCluster,ArrayList<String> clusterid)
{
topicName = TopicName;
topicID = TopicID;
clusterList = miniCluster;
clusterID = clusterid;
}
String topicID;
String topicName;
boolean isMandatory;
List<MiniCluster> clusterList = new ArrayList<MiniCluster>();
ArrayList<String> clusterID = new ArrayList<String>();
}
的deserialisation代碼如下 -
對於羣集類:
Gson gson1 = new Gson();
Cluster[] clusters = gson1.fromJson(json, Cluster[].class);
對於主題類:
Gson gson = new Gson();
JsonParser parser = new JsonParser();
JsonObject responseObj = parser.parse(json).getAsJsonObject();
String topicID = responseObj.getAsJsonPrimitive("topicID").getAsString();
String topicName = responseObj.getAsJsonPrimitive("topicName").getAsString();
Boolean isMandatory = responseObj.getAsJsonPrimitive("isMandatory").getAsBoolean();
JsonArray cList = responseObj.getAsJsonArray("clusterList");
JsonArray cID = responseObj.getAsJsonArray("clusterID");
List<MiniCluster> clusterList = new ArrayList<MiniCluster>();
ArrayList<String> clusterID = new ArrayList<String>();
for(int i=0;i<cID.size();i++)
{
clusterList.add(gson.fromJson(cList.get(i), MiniCluster.class));
clusterID.add(cID.get(i).toString());
}
The JsonData to be deserialised
在此先感謝。
您可能想要更改您的問題。它含糊不清:您發佈的兩個類與JSON(de-)序列化有什麼關係?你正在使用哪兩種方法(從android庫,從另一個庫,...)? 您可能想要顯示您在嘗試(取消)序列化時使用的代碼。 – Patrick
@Patrick我發佈了兩個類來顯示一個類有原始組件而另一個有ArrayList的區別。所以我懷疑這是否是使用JSONParser的原因。是的,我添加了反序列化代碼。 – viedee
您是否嘗試用'Gson'對「Topic」進行反序列化?另外,如果你將一個樣本json放入問題主體中,它確實會有所幫助。 – Nikhil