获取到的JSON数据中包含四个字段,其中有一个是Dictionary类型的数据,需要将他们解析之后再存入自定义的Model中
//自定义的Model
```java
public class ProData {
public String id;
public int num;
public long time;
public static Dictionary<String, Double> data;
}
//json数据
"[{\"id\":\"111\",\"num\":2,\"time\":1635724258528,\"data\":{\"dv1\":0.22999999999999998,\"dv2\":14.24,\"dv3\":0.05,\"dv4\":0.0,\"dv5\":0.0,\"dv6\":1.0,\"dv7\":0.006,\"dv8\":0.006,\"dv9\":0.0,\"dv10\":0.0}},
{\"id\":\"222\",\"num\":11,\"time\":1635724267526,\"data\":{\"dv1\":0.74,\"dv2\":16.44,\"dv3\":0.05,\"dv4\":0.0,\"dv5\":0.0,\"dv6\":1.0,\"dv7\":0.0785,\"dv8\":0.0785,\"dv9\":0.0,\"dv10\":0.0}}]
解析json的代码这么写的
private List<ProData> dataGsonParse(String jsonData) {
List<ProData> dataList;
try {
Gson gson = new Gson();
String str = gson.fromJson(jsonData, String.class);
dataList = gson.fromJson(str, new TypeToken<List<ProData>>() {
}.getType());
} catch (Exception e) {
dataList = null;
e.printStackTrace();
LogUtil.e(TAG, "dataGsonParse: json解析失败--" + e.getMessage());
}
return dataList;
}
前三个字段数据解析正常,但是使用ProData.data.get("dv1")取值时报错
Attempt to invoke virtual method 'java.lang.Object java.util.Dictionary.get(java.lang.Object)' on a null object reference
debug查看也说data为null
请问这种问题要怎么解决 是解析方式不正确嘛?
dv1在data里啊。
data为啥是个静态变量?
而且你为什么不用Map,而是Dictionary?
Dictionary虽然是抽象映射,和map一样,但是这里的解析不适用,你的 ProData还是要根据实际改造一下
public class ProData {
public String id;
public int num;
public long time;
public Data data=new Data();
class Data{
double dv1;
double dv2;
double dv3;
double dv4;
double dv5;
double dv6;
double dv7;
double dv8;
double dv9;
double dv10;
}
}