Gson 复杂类型的json转对象
使用Gson对json数组进行转换,如果遇到如下格式的json应该怎么样来转呢,下面的字符串是map里面不但存放了String,还存放了list<map>结构类型
String mapJson= "{'a':'a1','b':'b1','c':[{'d':'d1'}]}";
我们前台使用如下代码进行封装,得到的字符串结构就是上面的结构
var jsons={ "assignee":"${hashmap['sys_screenname'] }", "proKey":'youhuaqc', "audit":'yes', "audityj":'提交清查计划', "executions":'', "sqlvarIDs":$("#checkQCCreate_form input[name='qccode']").val(), "zxr":$("#checkQCCreate_form input[name='screenname']").val() } var jsonformList=[]; jsonformList.push(formData); jsons.jsonform=jsonformList; var datas = JSON.stringify(jsons);
那么我们在后台可以这样进行解析,如下面的方法所示
public void jsonToMap(){ String mapJson= "{'a':'a1','b':'b1','c':[{'d':'d1'}]}"; Map<String,Object> fromJson = new Gson().fromJson(mapJson, Map.class); List<Map<String,String>> str = (List<Map<String, String>>) fromJson.get("c"); System.out.println(str.get(0).get("d")); }
上面代码中,对于key为c的数据,我们直接进行强制转换
如果我们这样写
Map<String,String> fromJson = new Gson().fromJson(mapJson, Map.class);
是错误的,Gson不会报错,但是执行到这里,整个方法会被中止。
爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情