需求,前台提交查询请求, 后台返回一个Json字符串:
"reJson":{
"errInfo":"错误内容"
"tbData":[
{
"barCode":"a1",
"size":"11"
},
{
"barCode":"a2",
"size":"11"
}
]
}
后台构造Json:首先确定使用什么数据类型, 不想为了"reJson"生成一个用户类, 只能:
HashMap<String,String> reJson = new HashMap<String, String>();
"tbData"中的每个元素都是由键值对组成的jsonObject, 显然可以用HashMap<String,String>
单个元素:
HashMap<String,String> cmdtJson = new HashMap<String, String>();
cmdtJson.put("barCode","a1");
cmdtJson.put("size","11");
接下来需要确定"tbData"的类型,最初使用List<HashMap<String,String>>
tbData.add(cmdtJson);...
但当前台反序列化tbData时取不到对象, 猜测因为在序列化时cmdtJson没有被当成Json字符串处理,而是HashMap<String,String>.
因此序列化改为:
ArrayList<String> tbData = new ArrayList<String>();
tbData..add(gson.toJson(cmdtJson));
结果前台反序列化时每次都要用eval()
比如:
var reJson = eval("(" + reJsonStr + ")")
var tbData = eval("(" + reJson.tbData + ")")
请问这是正常的使用方式吗(为什么觉得别扭),有没有什么办法不用eval, (或者更优雅的方式)?