如何用GSON反序列化包含动态键的JSON数据?
如何反序列化result字段键值动态变化的JSON?
我收到一段JSON响应,其中result字段的键是动态的,有时仅包含3个条目,有时是5个或更多。键与值的名称、数量均不固定,原本以为只需使用List即可,请问该如何编写类来正确反序列化这段JSON?
最初的代码实现
主类
public static void main(String[] args) { String response = "{\n" + " \"error\": [],\n" + " \"result\": {\n" + " \"value11\": \"0.0233260\",\n" + " \"value22\": \"59.2500\",\n" + " \"value33\": \"0.0233260300\",\n" + " \"value44\": \"0.00000000\"\n" + " }\n" + "}"; Gson gson = new Gson(); var responseBalance= gson.fromJson(response, ResponseIds.class); System.out.println("Print " + responseBalance.getResult().getData()); }
ResponseIds类
public class ResponseIds { @SerializedName("result") private Result result; @SerializedName("error") private List<Object> error; public Result getResult(){ return result; } public List<Object> getError(){ return error; } }
Result类
public class Result{ private HashMap<String, String> data;; public HashMap<String, String> getData() { return data; } public void setData(HashMap<String, String> data) { this.data = data; } }
简洁解决方案(编辑补充)
直接将result字段定义为Map类型,无需额外的Result类:
public class ResponseIds { @SerializedName("result") private Map<String, String> result; @SerializedName("error") private List<Object> error; public Map<String, String> getResult() { return result; } }
内容的提问来源于stack exchange,提问作者User1751
相关产品推荐
相关产品推荐

