我正在尝试使用GSON将一个JSON .txt文件解析为一个。JSON文件具有以下结构:
{
"event0" : {
"a" : "abc",
"b" : "def"
},
"event1" : {
"a" : "ghi",
"b" : "jkl",
"c" : "mno"
}
}我已经将文本文件读入一个名为dataStr的字符串中。我想使用fromJson方法将事件捕获到下面的JAVA类中:
public class Event {
private String a;
private String b;
private String c;
public Event() {}
}问题是JSON可能在某些元素中有一个额外的字段"c“。我希望将所有事件解析为事件类对象,对于没有"c“字段的情况,我希望使其在对象中为空或为零。事先不知道哪些元素会有"c“字段。
具体来说,我无法理解如何处理一些JSON元素中的一个额外字段。我要做的事情是:
Gson gson = new Gson();
ArrayList<Event> events = gson.fromJson(dataStr, Event.class);但是,首先,我一直在讨论如何迭代Json文件中的事件,其次,如何将一些偶尔丢失的字段处理到同一个事件对象中。我真的很感激你朝正确的方向踢。谢谢你们所有人。
我对JSON解析相当陌生,可能忽略了以下答案中的一些内容:
Using Gson to convert Json into Java Object
Mapping JSON into POJO using Gson
发布于 2017-07-07 11:04:14
首先,我认为您的JSON应该如下所示:
{
"events": [
{
"name": "event0",
"a": "abc",
"b": "def"
},
{
"name": "event1",
"a": "abc",
"b": "def",
"c": "mno"
}
]
}对于您的模型,这需要两个类:
public List<Event> events = null;
public class Event {
public String name;
public String a;
public String b;
public String c;
}然后用GSON
Events events = gson.fromJson(jsonData, Events.class);此外,我建议始终为JSON使用一个在线验证器,这样在对JSON进行编码之前,您就可以确定您的JSON结构是正确的。https://jsonlint.com/或用于格式化JSON:http://jsonprettyprint.com/
此外,这个网站可以通过JSON或使用示例文件为您创建Java类。http://www.jsonschema2pojo.org/
https://stackoverflow.com/questions/44967922
复制相似问题