4

と の違いを知っていJSONArrayますJSONObject

それらを逆シリアル化することに疑問があります。

object type の配列をデシリアライズする際に、objectClusterを使用してデシリアライズできましたfromJson。逆に、タイプのオブジェクトをデシリアライズするときはTopic、 を使用する必要がありJSONParserました。

違いはなんですか ?いつ使うかわかりませんJSONParser

参考までに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>();
}

逆シリアル化コードは次のとおりです-

クラスタ クラスの場合:

    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());

    }

逆シリアル化される JsonData

前もって感謝します。

4

1 に答える 1