gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 07:25:29 25 4
gpt4 key购买 nike

我有这个 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,但我无法创建具有两种不同类型的列表。

如何进行?

最佳答案

我的数据类

@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);
}
};

关于java - 没有键的 JSON 数组的 POJO [Long, Double],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53871025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com