【发布时间】:2014-07-21 23:34:09
【问题描述】:
我正在使用 Gson 将 JSON 转换为 Java 对象。我在 json 中有一个字段,我们明智的服务人员根据数据库中返回的项目数将其编码为数组或对象。问题是如何对 Java 对象进行建模以传递给 Gson 转换器以便我可以处理这两种类型?
json = new Gson().fromJson(reader, Order.class);
Java 类只正确解析 JSON 数组
public class Order {
private Detail detail
}
public class Detail {
public String id;
public List<Type> types;
//// getters and setters
}
public class Type {
public String typeId;
public String typeName
//// getters and setters
}
JSON 数据数组
{
"detail":{
"id":"1234565",
"types":{
"type":[
{"typeId":"1246565","typeName":"MyName1"},
{"typeId":"1444445","typeName":"MyName2"}
]
}
}
}
JSON 数据对象
{
"detail":{
"id":"1234565",
"types":{
"type":{"typeId":"1246565","typeName":"MyName1"}
}
}
}
【问题讨论】:
-
在 GSON 中没有办法询问元素的类型是什么吗?
-
正如您所提到的,您正在使用糟糕的服务设计。即使数据库中只有一个项目,您能否与数据服务人员讨论仅使用第一种类型(JSON 数据数组)?这不仅会让您更容易,而且将来使用该服务的其他开发人员/团队也会更容易。
-
例如,
isJsonArray和isJsonObject。 (我在 30 秒内找到了这些,我什至不使用 GSON。) -
我别无选择,服务已设置,并且由于遗留问题而不得不保持这种状态......我只是试图不再手动解析对象并使用 Gson 自动解析。
-
您的确切问题是什么?是否要将JSON字符串都转换为java对象并且事先不知道。