Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Gson反序列化非内容数据类型_Java_Json_Gson_Deserialization - Fatal编程技术网

Java Gson反序列化非内容数据类型

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

我正在使用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 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;
}