JSON 数组的 POJO 没有键 [Long, Double]

POJO for JSON array without keys [Long, Double]

我有这个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: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 13 path $.entries[0]

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

如何进行?

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

您是否尝试过使用保存第一个数组数据的 pojo class(例如 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;

希望对您有所帮助!

我的数据Class

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

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

JsonDeserializer<MyData> deserializer = new JsonDeserializer<MyData>() {  
    @Override
    public MyData deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {

        List myList = new ArrayList<Entry>()

        JSONArray arr = obj.getJSONArray("entries");

        for (int i = 0; i < arr.length(); i++) {
          Entry entry = new Entry(
                new Long(arr[0]),
                new Long(arr[1])
          );
          myList.add(entry)
        }



        return new MyData(myList);
    }
};