没有键[Long,Double]

时间:2018-12-20 14:53:52

标签: java android gson pojo

我有这个JSON:

{
    "entries": [
        [
            1545230391429,        // long
            3799.9872120695404    // double
        ],
        [
            1545230685249,
            3796.6928339346546
        ],
        [
            1545231000586,
            3793.6487491594485
        ],
        ...
    ]
}

此POJO可以将它们作为字符串处理,但随后我需要手动将它们转换为适当的类型... aaa,这很冒险:

@SerializedName("entries")
@Expose
private List<List<String>> entries;

我尝试了更可靠的方法,但是无法正常工作:

public class Entry {
    public Long timestamp;
    public Double value;
}

@SerializedName("entries")
@Expose
private List<Entry> entries;

我知道

  

com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:   预期为BEGIN_OBJECT,但位于第1行第13列路径的BEGIN_ARRAY   $ .entries [0]

我认为问题在于Entry应该是List,但是我无法列出两种不同类型的列表。

如何进行?

3 个答案:

答案 0 :(得分:4)

MyData类

.information

尝试使用自定义反序列化(这只是示例,请检查代码)

@SerializedName("entries")
@Expose
private List<List<String>> entries;

答案 1 :(得分:1)

您正在尝试将二维数组解析为List。首先,您应该将其解析为二维的Object数组,并对其进行迭代以解析并填充List。

答案 2 :(得分:0)

您尝试使用保存第一个数组数据的pojo类(例如EntryArrayHolder)。

public class Entry {
    public Long timestamp;
    public Double value;
}

public class EntryArrayHolder {
    private List<Entry> entriesHolder = null;
}

@SerializedName("entries")
@Expose
private List<EntryArrayHolder> entries= null;

希望有帮助!