gpt4 book ai didi

Android JsonArray 和 JsonObject 反序列化

转载 作者:太空宇宙 更新时间:2023-11-03 10:49:00 24 4
gpt4 key购买 nike

我知道 JSONArrayJSONObject 的区别。

我对反序列化它们有疑问。

在反序列化对象类型为 Cluster 的数组时,我可以使用 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;
}
}

主题类:

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

}

The JsonData to be deserialised

提前致谢。

最佳答案

这是我用来反序列化您的 json 的最少代码。

package com.foo.examples;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import com.google.gson.Gson;

public class JsonDeser {

/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
String jsonStr = JsonManupulation.readFile(System.getProperty("user.dir")+"/topic.json");
Gson gson = new Gson();
Topic topic = gson.fromJson(jsonStr, Topic.class);
System.out.println(topic);

}

public static class RepresentativeStory{
String description,headline;
}

public static class Cluster{
public String clusterID;
public RepresentativeStory representativeStory;
}

public static class Topic {
String topicID;
String topicName;
boolean isMandatory;
List<Cluster> clusterList = new ArrayList<Cluster>();
ArrayList<String> clusterID = new ArrayList<String>();
@Override
public String toString() {
return new Gson().toJson(this);
}
}


}

文件 topic.json 包含您提供的 json 字符串。为简洁起见,我在 RepresentativeStory 类中只定义了两个属性。您必须定义所有属性;这些类也被定义为内部类。

这是输出

{
"topicID": "512ecaf6e4b005fbcd13c681",
"topicName": "India",
"isMandatory": false,
"clusterList": [
{
"clusterID": "51c7d3e284ae6383d62480cc",
"representativeStory": {
"description": "NEW+DELHI%3A+Canadian+e-commerce+platform+provider%2C+Shopify+has+forayed+into+the+Indian+market+in+partnership+with+Singapore%27s+SingTel.+SingTel+will+help+build+ecosystem+which+includes+tying+up+with...",
"headline": "E-commerce+platform+provider+Shopify+enters+India"
}
},
{
"clusterID": "51c7d47784ae6383d624821c",
"representativeStory": {
"description": "MUMBAI%3A+Account+holders+in+rural+banks+and+small+cooperatives+can+now+make+online+purchases+with+the+National+Payment+Corporation+of+India+launching+an+e-commerce+solution+for+its+RuPay+card.+RuPay...",
"headline": "RuPay+cards+can+be+used+online"
}
},
{
"clusterID": "51c7d36d84ae6383d6247fc2",
"representativeStory": {
"description": "WASHINGTON%3A+Those+insidious+email+scams+known+as+phishing%2C+in+which+a+hacker+uses+a+disguised+address+to+get+an+internet+user+to+install+malware%2C+rose+87+per+cent+worldwide+in+the+past+year%2C+a...",
"headline": "Phishing+scams+rising+globally%3A+Study"
}
},
{
"clusterID": "51c7d62d84ae6383d6248366",
"representativeStory": {
"description": "With+India+making+it+clear+that+the+Afghan+reconciliation+process+should+not+lead+to+conferring+legitimacy+to+the+Taliban+and+undermine+the+elected+Afghan+government%2C+the+visiting+US+Secretary+of+Stat...",
"headline": "No+pact+if+Taliban+has+Qaeda+links%3A+Kerry"
}
},
{
"clusterID": "51c7d28084ae6383d6247e33",
"representativeStory": {
"description": "Palestinian+president+Mahmud+Abbas+on+Sunday+formally+accepted+the+resignation+of+his+newly-installed+prime+minister+Rami+Hamdallah....",
"headline": "President+Abbas+accepts+resignation+of+PM%3A+source"
}
},
{
"clusterID": "51c7d51a84ae6383d62482e1",
"representativeStory": {
"description": "With+land+being+acquired+in+Imphal%2C+Manipur+is+set+to+get+its+first+international+airport....",
"headline": "Eye+on+SE+Asia%2C+Manipur+set+to+get+first+international+airport"
}
},
{
"clusterID": "51c7d39184ae6383d624800e",
"representativeStory": {
"description": "The+state+government+may+declare+mangroves+as+%E2%80%9Creserved+forests%E2%80%9D.+Currently%2C+mangroves+on+government+land+are+deemed+%E2%80%9Cprotected+forests%E2%80%9D+while+those+on+private+land+are+%E2%80%9Cforests%E2%80%9D....",
"headline": "Mangroves+in+Maharashtra+may+get+status+of+%E2%80%98reserved+forests%E2%80%99"
}
},
{
"clusterID": "51c7d38084ae6383d6247fe8",
"representativeStory": {
"description": "NEW+DELHI%3A+Starting+June+21%2C+you+can+pay+your+passport+processing+fees+online+and+book+an+appointment+with+the+passport+office.+Making+passport+services+a+timely%2C+transparent%2C+more+accessible+and...",
"headline": "Now%2C+pay+pay+passport+fees+online"
}
}
],
"clusterID": [
"51c7d3e284ae6383d62480cc",
"51c7d47784ae6383d624821c",
"51c7d36d84ae6383d6247fc2",
"51c7d62d84ae6383d6248366",
"51c7d28084ae6383d6247e33",
"51c7d51a84ae6383d62482e1",
"51c7d39184ae6383d624800e",
"51c7d38084ae6383d6247fe8"
]
}

您可以根据您的确切需求即兴创作此代码!

关于Android JsonArray 和 JsonObject 反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17403256/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com