java - 不带键的 JSON 数组的 POJO [Long, Double]
问题描述
我有这个 JSON:
{
"entries": [
[
1545230391429, // long
3799.9872120695404 // double
],
[
1545230685249,
3796.6928339346546
],
[
1545231000586,
3793.6487491594485
],
...
]
}
这个 POJO 可以将它们作为字符串处理,但是我需要手动将它们转换为正确的类型...... aaaand 它是有风险的:
@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 列路径 $.entries[0] 处为 BEGIN_ARRAY
我认为问题在于Entry
应该是 a List
,但我无法列出两种不同类型的列表。
如何进行?
解决方案
MyData 类
@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);
}
};
推荐阅读
- machine-learning - 为什么我的 Keras 神经网络的准确率为零?
- javascript - 用 / 拆分 URL 并使用 javascript 替换数据
- flexbox - 当容器变成 flex container gatsby 时图像消失
- algorithm - 在进行归并排序时是否有必要将索引作为参数传递?
- android - 创建数据库失败android.database.sqlite.SQLiteException
- qlikview - QlikView - 如何在加载过程中使用“编辑脚本”中的“设置”
- python - 将静态(用于 Django 项目)上传并使用到 AWS S3
- python - 熊猫拆分每周时间序列和按月分组
- javascript - 拦截来自不是我的网站的网络请求以提供网页是否合法?
- python - Pyautogui 声明一个变量