【问题标题】:Deserializing a JSON object in Java在 Java 中反序列化 JSON 对象
【发布时间】:2014-11-25 12:09:36
【问题描述】:

我有一个 Java Web 服务响应作为一个对象,它有一个以整数作为键和自定义对象作为值的映射。自定义对象又包含另一个自定义对象的列表。当我尝试反序列化响应时,除自定义对象列表外,所有内容都被反序列化。列表为空。

我的代码:

String dataFromServer ="";
GsonBuilder gsonBuilder = new GsonBuilder();
Gson gson = gsonBuilder.create();
Type listType = new TypeToken<OuterCustomResponse>() {}.getType();


OuterCustomResponse respo = gson.fromJson(data, Books.class);

OuterCustomResponse 具有以下结构:

OuterCustomResponse {
    private int age;
    private String name;
    private Map<Integer,CutomObj1> obj;
}

CtomObj1 {
    List<CustomObj2> customObj2;
}

问题是响应包含年龄、姓名和地图对象,但在地图对象内部,列表是空的。我尝试通过实现 JSON 反序列化器为 CustomObj2 编写反序列化器,但没有用。任何帮助表示赞赏。

【问题讨论】:

  • CustomObj1class 是否实现了Serializable?也许,如果没有,则无法对其进行序列化,并且您会得到错误的输出。
  • 我尝试在 customobj1 中实现 srializablr,但没有成功。但是 customobj1 有其他字符串和 intgr 属性,它们是正确获得的。
  • 好的,所以你的问题只是CustomObj2?你里面有什么?也是Serializable吗?
  • 这是一个自定义类,我尝试了 implmnig serializabl ,但没有运气。该类具有原始数据类型变量
  • 请分享json文本

标签: java json gson deserialization unmarshalling


【解决方案1】:

使用一些示例 JSON 会更好。 (我猜你也有错字CtomObj1 {...

也许customObj2 不是对象而不是某种原始类型(?不太可能正常),或者您的列表是关联数组(=object),因此您有一个复杂对象而不是列表/数组?

如果它是一个关联数组(~ 对象)并且看起来像一个列表:

OuterCustomResponse { 
  age:3, 
  name:"foo", 
  map:{ 
    1:{ 
      listitem1a:{...}, 
      listitem2a:{...}}, 
    2:{}, 
    ... 
}}

您可能必须从以下 3 个选项中进行选择才能进行一般反序列化:https://sites.google.com/site/gson/gson-user-guide#TOC-Serializing-and-Deserializing-Collection-with-Objects-of-Arbitrary-Types

如果它确实是一个列表((索引)数组):

OuterCustomResponse { 
  age:3, 
  name:"foo", 
  map:{ 
    1:[ 
      { listitem1propertyA: "bar" }, 
      { listitem2propertyB: "baz" }
    ], 
    2:[], 
    ... 
}}

列表项可以是相同或不同的类型。

如果它们是相同的类型,如果 listitem1propertyA 正确映射到某个 CustomObj2.listitem1propertyA 字段,则您的方法应该有效。

如果它们不是同一类型(或者可能只有一个异常对象不匹配 - 我不知道这是否会导致空列表),您必须再次从上述选项中进行选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-02
    • 1970-01-01
    • 2015-02-27
    相关资源
    最近更新 更多