关于Java处理JSON字符串的新手问题 20

StringjsonStr="[{\"attributes\":{\"gender\":{\"value\":\"Male\"}},\"face_rectangle\":... String jsonStr="[{\"attributes\": {\"gender\": {\"value\": \"Male\"}}, \"face_rectangle\": {\"width\": 507, \"top\": 614, \"left\": 251, \"height\": 507}, \"face_token\": \"ffcec0f38c091611c7f197e22d9bad7f\"}]";
net.sf.json.JSONArray JArray=new net.sf.json.JSONArray();
JArray=JSONArray.fromObject(jsonStr);
Map<String , Object> map=new HashMap<String, Object>();
for (int i = 0; i < JArray.size(); i++) {
Object o=JArray.get(i);
jsonobject = (net.sf.json.JSONObject) o;
Set<String > keys=jsonobject.keySet();
for (String string : keys) {
Object values=jsonobject.get(keys);
map.put(string, values);
}

}
System.out.println(map);

各位师傅好,我这个代码返回结果是{attributes=null, face_rectangle=null, face_token=null}
我想问如何在map的key中再加一个map,代码如何写?
展开
 我来答
胡254351481
2019-04-19 · TA获得超过203个赞
知道小有建树答主
回答量:281
采纳率:50%
帮助的人:70.1万
展开全部

第一点:你既然使用了net.sf.json.JSONObject对象引入了jar包直接使用其的fromObject将对象转为字符串效率更高,出错的概率也更小一些。

第二点:对象中套对象的方式也很简单,如这样

public static void main(String[] args) {

Map map1 = new HashMap();
Map map2 = new HashMap();
Map map3 = new HashMap();

map3.put("value","Male");
map2.put("gender",map3);
map1.put("attributes",map2);

JSONObject json = JSONObject.fromObject(map1);
System.out.println(json);
}

第三点:将字符串解析回来。

Object obj2 = JSONObject.toBean(json,Map.class);
Map map = (Map) obj2;

MorphDynaBean map4 = (MorphDynaBean) map.get("attributes");
MorphDynaBean map5 = (MorphDynaBean) map4.get("gender");
String male = (String) map5.get("value");
System.out.println(male);

第四点:

可以参考:网页链接

或者百度搜索:java操作json数据之net.sf.json-lib 经验

百度网友c625205
2019-04-19 · 超过27用户采纳过TA的回答
知道答主
回答量:61
采纳率:78%
帮助的人:25.4万
展开全部
Object values=jsonobject.get(keys);这一句写错了,应该是Object values=jsonobject.get(string );不然打印出来是空,你这个json字符串本来就很短,没有规律,不用map中嵌套map,如果嵌套的话不还如写一个实体类把key当时实体类中的属性
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
创作者zUzVB1Sl31
2019-04-19 · 编程类资料、英语学习资料
创作者zUzVB1Sl31
采纳数:1331 获赞数:5975

向TA提问 私信TA
展开全部
自己写怎么分割怎么替换类就好了,别用通用的,到时候错误百出。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式