如何使用gson解析json?我有一个具有多种对象类型的json数组,但我不知道我需要创建哪种对象来保存此结构。我无法更改json数据格式(我不控制服务器)。我可以使用gson或其他库解析此json数组,怎么办?
这是json代码块:
[
{
"type": 1,
"object": {
"title1": "title1",
"title2": "title2"
}
},
{
"type": 2,
"object": [
"string",
"string",
"string"
]
},
{
"type": 3,
"object": [
{
"url": "url",
"text": "text",
"width": 600,
"height": 600
},
{
"url": "url",
"text": "text",
"width": 600,
"height": 600
}
]
},
{
"type": 4,
"object": {
"id": 337203,
"type": 1,
"city": "1"
}
}
]
这个json结构本质上是gson不友好的。即您不能在Java中对此进行清晰建模,因为“对象”键引用了动态类型。您可以使用此结构做的最好的事情就是像这样建模:
public class Models extends ArrayList<Models.Container> {
public class Container {
public int type;
public Object object;
}
public class Type1Object {
public String title1;
public String title2;
}
public class Type3Object {
public String url;
public String text;
public int width;
public int height;
}
public class Type4Object {
public int id;
public int type;
public int city;
}
}
然后在type和object字段上进行一些尴尬的切换:
String json = "{ ... json string ... }";
Gson gson = new Gson();
Models model = gson.fromJson(json, Models.class);
for (Models.Container container : model) {
String innerJson = gson.toJson(container.object);
switch(container.type){
case 1:
Models.Type1Object type1Object = gson.fromJson(innerJson, Models.Type1Object.class);
// do something with type 1 object...
break;
case 2:
String[] type2Object = gson.fromJson(innerJson, String[].class);
// do something with type 2 object...
break;
case 3:
Models.Type3Object[] type3Object = gson.fromJson(innerJson, Models.Type3Object[].class);
// do something with type 3 object...
break;
case 4:
Models.Type4Object type4Object = gson.fromJson(innerJson, Models.Type4Object.class);
// do something with type 4 object...
break;
}
}
最终,最好的解决方案是将json结构更改为与Java更兼容的东西。
例如:
[
{
"type": 1,
"type1Object": {
"title1": "title1",
"title2": "title2"
}
},
{
"type": 2,
"type2Object": [
"string",
"string",
"string"
]
},
{
"type": 3,
"type3Object": [
{
"url": "url",
"text": "text",
"width": 600,
"height": 600
},
{
"url": "url",
"text": "text",
"width": 600,
"height": 600
}
]
},
{
"type": 4,
"type4Object": {
"id": 337203,
"type": 1,
"city": "1"
}
}
]
本文向大家介绍如何过滤具有多个对象的JSON数据?,包括了如何过滤具有多个对象的JSON数据?的使用技巧和注意事项,需要的朋友参考一下 要使用多个对象过滤JSON数据,可以将filter和==一起使用。 示例 要运行上述程序,您需要使用以下命令- 输出结果 在这里,我的文件名为demo194.js。这将产生以下输出-
问题内容: 如何使用Gson解析此JSON?我有一个具有多个对象类型的数组,但我不知道需要创建哪种对象来保存此结构。我无法更改json消息(我无法控制服务器)。 唯一起作用的类是 JSON消息 (请注意具有多个对象类型的数组。) 问题答案: 《 Gson用户指南》明确涵盖了以下内容: https://sites.google.com/site/gson/gson-user-guide#TOC-Se
问题内容: 我以前从未使用过JSON,所以我对它的语法不熟悉。 目前,我有多个包含不同数据的数组。 我想创建一个JSON对象,其中包含多个数组,每个数组包含几段数据。 例如 一个称为汽车的对象,包含多个数组,每个数组用于不同的汽车品牌。在每个数组中,将是汽车的模型以及其他一些类型的数据,例如门的数量(这只是一个虚构的例子,并不重要)。 如果有人用示例解释语法,将不胜感激。 问题答案: 在最外层,J
问题内容: 尝试使用gson将以下json字符串解析为java对象 我有我的java类 转换后,我得到的提示对象为空。 有人可以纠正我吗 问题答案: 试试这个JSON: 使用此Java类: 奇迹般有效 输出:
问题内容: 我有一个JSON,它可以是单个对象或相同对象的数组。有没有一种方法可以使用Gson解析此数据,从而区分单个对象还是数组? 我目前唯一的解决方案是手动解析json并用try catch包围它。首先,我将尝试将其解析为单个对象,如果失败,它将引发异常,然后尝试将其解析为数组。 我不想手动解析它……那将使我永远。这是正在发生的事情的想法。 这是可以是数组或单个对象的对象。 然后在与json响
问题内容: 我正在尝试在Python中加载和解析JSON文件。但是我在尝试加载文件时遇到了困难: 产量: 我看着18.2。文档中的JSON编码器和解码器,但是通读这个看起来糟透了的文档非常令人沮丧。 前几行(用随机条目匿名): 问题答案: 你有一个JSON Lines格式的文本文件。你需要逐行解析文件: 每行都包含有效的JSON,但总体而言,它不是有效的JSON值,因为没有顶级列表或对象定义。 请