【发布时间】:2015-07-16 04:21:07
【问题描述】:
我的 json 字符串如下所示:
{
"text": ["foo",1,"bar","2",3],
"text1": "value1",
"ComplexObject": {
.....
}
}
我有一个这样定义的 pojo:
class MyPojo {
List<String> text;
String text1;
ComplexObject complexObject;
}
我使用 google gson 并且能够正确填充我的 java 对象。这里的问题是字段文本是一个混合类型(字符串和整数)的数组。所以那里的所有条目都转换为字符串,我无法确定数组中的哪些条目是字符串与 int。我不能使用 parseInt,因为原始数组中的条目可能有“2”和 3。
在转换成 java 对象后,有没有办法让我获得数组中字段的正确实例类型。
解决方案
所以我使用 JsonDeserializer 来实现使用 gson 的解决方案。然后我尝试使用杰克逊。猜猜jackson通过保留数据类型支持序列化/反序列化混合数组类型。
ObjectMapper mapper = new ObjectMapper();
MyPojo gmEntry = mapper.readValue(json, new TypeReference<MyPojo >(){});
而且我基本上可以获取 List
你真丢脸!!
【问题讨论】:
-
棘手的情况。可能您可能已经尝试过,但是不能单独维护数据,即字符串和数字吗?
-
没错,我不能单独维护
-
gson 不知道数据包含整数作为字符串以及整数的事实。基于 List
它将所有内容转换为字符串。一旦完成,似乎没有办法单独获取整数而不获取实际上是整数的字符串。在我看来是死路一条。 -
我没有绑定到 gson。还有其他图书馆可以提供帮助吗?