无法使用 Gson 将包含嵌套 json 数组的 json 转换为等效的 JAVA 类
Posted
技术标签:
【中文标题】无法使用 Gson 将包含嵌套 json 数组的 json 转换为等效的 JAVA 类【英文标题】:Unable to convert a json containing nested json arrays to an equivalent JAVA class using Gson 【发布时间】:2021-12-17 12:44:06 【问题描述】:使用的 JSON 字符串:
'"Sensors":[\"name\":\"BLRB50CM_A\",\"cameraId\":\"Cam10\",\"id\":1,\"resolution\":\"1280 x 720\",\"officeLocation\":\"Offshore Development Center\",\"tags\":\"Entrance Camera, Parking Lot\",\"isActive\":\"true\",\"hls\":\"https://bitdash-a.akamaihd.net/content/sintel/hls/playlist.m3u8\",\"rtsp\":\"rtsp://10.66.102.66:32278/mystream/parking_lot\",\"type\":\"sensor\",\"inputs\":[],\"outputs\":[2]]'
java pojo 类:
public class ServiceFlowData
public ArrayList<Sensor> sensors;
public ArrayList<Sensor> getSensors()
return sensors;
public void setSensors(ArrayList<Sensor> sensors)
this.sensors = sensors;
用于转换为 java 对象的代码
Gson gson = new Gson();
ServiceFlowData serviceFlowData = gson.fromJson(jsonString,ServiceFlowData.class);
System.out.println("serviceFlowData"+serviceFlowData.getSensors());
我将获取传感器设为空。
我在这里错过了什么..?
【问题讨论】:
你可以使用这个链接:***.com/questions/55533093/… 类必须具有与您要映射的 JSON 中相同的变量,并且它们区分大小写! 【参考方案1】:您的 json 键是 Sensors 而不是 sensors。
解决方案 1
尝试改变
public ArrayList<Sensor> sensors;
到
public ArrayList<Sensor> Sensors;
解决方案 2
您可以使用@SerializedName
注解将json键映射到具有不同名称的java变量。
【讨论】:
这样做是个坏主意。 Gson 有一种特殊的方法可以将代码保留为 Java 代码约定。 @fluffy 更新了替代方案的答案。以上是关于无法使用 Gson 将包含嵌套 json 数组的 json 转换为等效的 JAVA 类的主要内容,如果未能解决你的问题,请参考以下文章
在 Android 上通过 GSON 从嵌套 JSON 数组中获取价值? [复制]
由于嵌套 bean,无法在 playframework 中使用 GSON 解析 JSON