Java Gson反序列化非内容数据类型
我正在使用JSONObject将此xml转换为Json字符串。然后我使用Gson将这个Json字符串转换为POJO 此XML:Java Gson反序列化非内容数据类型,java,json,gson,deserialization,Java,Json,Gson,Deserialization,我正在使用JSONObject将此xml转换为Json字符串。然后我使用Gson将这个Json字符串转换为POJO 此XML: <?xml version="1.0" encoding="UTF-8"?> <History total="2" pageSize="2" pageStart="0"> <Asset href="/SomePath/continues" id="Story:12345:6789"> <Attribute
<?xml version="1.0" encoding="UTF-8"?>
<History total="2" pageSize="2" pageStart="0">
<Asset href="/SomePath/continues" id="Story:12345:6789">
<Attribute name="Number">S-12345</Attribute>
<Attribute name="ChangeDate">2017-02-06T15:50:00.180</Attribute>
<Attribute name="Status.Name">Done</Attribute>
<Attribute name="Owners.Name">
<Value>Joe Smith</Value>
</Attribute>
</Asset>
<Asset href="/SomePath/continues" id="Story:9876:54321">
<Attribute name="Number">S-67890</Attribute>
<Attribute name="ChangeDate">2017-04-04T09:46:10.780</Attribute>
<Attribute name="Status.Name">Done</Attribute>
<Attribute name="Owners.Name">
<Value>Joe Smith</Value>
<Value>Tom Fong</Value>
</Attribute>
</Asset>
</History>
问题出现在(“Value”)标记上。有时它们只是一个字符串,有时则是一个数组
我一直在阅读Gson中的TypeTokens,这是反序列化这种不一致数据类型的唯一方法吗
我的课程设置如下:
public class QueryResults{
History History;
//Get/Sets
}
public class History{
long pageSize;
int pageStart;
long total;
List<Asset> Asset;
}
public class Asset{
String href;
String id;
List<Attribute> Attribute;
}
public class Attribute{
private String name;
private String content;
private Value value;
}
private class Value{
private List<String> names;
private String name;
}
公共类查询结果{
历史;
//获取/设置
}
公共课历史{
长页面大小;
int pageStart;
长期总计;
上市资产;
}
公共类资产{
字符串href;
字符串id;
列表属性;
}
公共类属性{
私有字符串名称;
私有字符串内容;
私人价值;
}
私有阶级价值{
私人名单名称;
私有字符串名称;
}
我已经尝试在Value类中包含(如图所示)字符串变量和列表变量。然后,我有一个空检查,希望gson会选择正确的一个,但这不起作用
有什么我完全不知道的建议吗
我应该注意到。。我无法控制这些数据 为什么不直接解析xml???这是如何实现的?看看为什么不把所有的东西都做成一个数组?
public class QueryResults{
History History;
//Get/Sets
}
public class History{
long pageSize;
int pageStart;
long total;
List<Asset> Asset;
}
public class Asset{
String href;
String id;
List<Attribute> Attribute;
}
public class Attribute{
private String name;
private String content;
private Value value;
}
private class Value{
private List<String> names;
private String name;
}