我是JSON的新手,与我研究过的任何其他解析方法相比,我喜欢GSON Api的强大和直截了当。
我想解析一个相当复杂的JSON(使用GSON),就结构而言,它类似于下面的JSON:
[
{
"name": "Steve",
"age": 42,
"description": null,
"email1": "steve@example.com",
"email2": null,
"address1": {
"type": "home",
"shippingMethod": "Charge by quantity",
"street": "Sunrise Ave",
"streetNo": 17
},
"address2": {
"type": "office",
"shippingMethod": null,
"street": "Sunset Ave",
"streetNo": 71
},
"anotherField": "another value"
},
{
"name": "Johnny",
...
"anotherField": "some other value"
}
]
public class Client {
String name;
int age;
String description;
String email1;
String email2;
ClientAddress address1;
ClientAddress address2;
String anotherfield;
..
getters() and setters()
public class ClientAddress {
String type;
String shippingMethod;
String street;
int streetNo;
..
getters() and setters()
}
}
Client[] clientsArray= (new Gson()).fromJson(jsonClients, Client[].class);
clientsArray[i].getAddress1().getShippingMethod();
我哪里出了问题?
是否有一种创建我所缺少的类的特殊方法?
注意:从结构的角度来看,我的JSON对象是完全有效的。如果您看到任何错误,这可能是因为当我手动创建上面的虚拟/演示时,它们出现了滑动。
只是为了遵循GSON集合的良好实践,尝试改变
Client[] clientsArray= (new Gson()).fromJson(jsonClients, Client[].class);
到
Type collectionType = new TypeToken<List<Client>>(){}.getType();
List<Client> clientsArray = (new Gson()).fromJson(jsonClients, collectionType);
如何使用GSON解析这个json? 我的代码: 我的stacktrace com.google.gson.JsonSyn出租车异常:java.lang.IllegalStateExctive:预期BEGIN_OBJECT但BEGIN_ARRAY在第1行第2列路径$com.google.gson.internal.bind.ReflecteTypeAdapterFactory$Adapter.rea
问题内容: 我在解析从javascript获取的JSON时遇到问题。JSON的格式是这样的: 到目前为止,我已经能够做到这一点: 但是我现在还需要用这些位置创建一个类。我一直在上课,因为我先尝试打印输出,但是我无法进一步细分它。我收到此错误消息: java.lang.IllegalStateException:这不是JSON数组。 我的代码是这样的: 我也尝试过这种方式: 在这种情况下,我得到:
我正在使用凌空OkHttp从服务器获取一些数据。 响应是一个包含JSON的字符串,我想使用GSON/POJO解析它。 我得到错误: 预期BEGIN_OBJECT,但在第1行第1列路径$上是STRING 尝试解析时。 原因:java.lang.IllegalStateException:预期BEGIN_OBJECT但在第1行第1列路径$ com.google.gson.stream.JsonRead
问题内容: 因此,我使用GSON来从API解析JSON,并被困在如何解析数据中的动态字段上。 这是查询返回的JSON数据的示例: 我当前处理单个静态值的方式是使用一个类: 然后我可以简单地使用GSON来解析它: 我知道这对子数据有效,因为我可以查询并获得单个条目并非常轻松地解析该条目,但是为数组中每个值给出的随机整数值呢?(即30655845和2868874) 有什么帮助吗? 问题答案: 根据GS
和 是我用来获取JSON并对其进行解析的类。但是当我运行第一个时,它会报告以下堆栈跟踪: 它告诉我添加JsonReader。将lenient(true)设置为我的代码,但我的代码不使用JsonReader。那么如何将setLenient(true)添加到代码中? 编辑:添加API响应(格式化):