您的位置:首页 > Web前端 > JavaScript

【Json】JSONObejct格式转化问题

2017-06-28 18:00 369 查看

1.问题:

为什么JSONObject类型不能转化为实体类对象?

Exception in thread “main” java.lang.ClassCastException: com.alibaba.fastjson.JSONObject cannot be cast to com.fxrj.email.model.EmailRecDecMesInfo

2.源代码:

String json="fnSuc_getNews(
{"code":"S_OK",
"errorCode":"",
"summary":"",
"var":[{"corpId":1000,
"createTime":1498617027512,
"messageFrom":0,
"messageInfo":{"content":"你好"},
"userId":"yunya-guo"},

{"corpId":1000,
"createTime":1498617027522,
"messageFrom":3,
"messageInfo":{"content":"世界"},
"messageState":0,
"messageType":1,
"userId":"yunya-guo"}

]})";
JSONObject jo= (JSONObject) JSON.parse(json);/*解析成doc格式*/

System.out.println("jo:"+jo);
JSONArray array=jo.getJSONArray("var");
List<EmailReceivedDetail> listEDetail=new ArrayList<>();
for (Object object:array.toArray()) {
EmailReceivedDetail erd = new EmailReceivedDetail();
JSONObject jsonObject=(JSONObject) object;

erd.setCorpId((Integer) jsonObject.get("corpId"));
erd.setCreateTime((Long) jsonObject.get("createTime"));
erd.setMessageFrom((Integer) jsonObject.get("messageFrom"));

erd.setMessageInfo(((EmailRecDecMesInfo) jsonObject.get("messageInfo")));
//System.out.println("messageInfo:");

erd.setMessageState((Integer) jsonObject.get("messageState"));
erd.setMessageType((Integer) jsonObject.get("messageType"));
erd.setUserId((String) jsonObject.get("userid"));
}
}


3.截图:



4.总结:

1、这里要明确,一层一层取的意义;

①jsonObject.get(“messageInfo”),这里取出来的是一个value,是通过key取得的值;

②(JSONObject)jsonObject.get(“messageInfo”)是把通过messageInfo这个key取出来的值,转化为JSONObject,即转化成json实体;

③((JSONObject)jsonObject.get(“messageInfo”)).get(“content”)是把原来第一层json对象的值,转化成json后,再通过key(“content”)获得其对应的值value;

④(String)((JSONObject)jsonObject.get(“messageInfo”)).get(“content”)把第二层json对象的值变成String类型,然后setContent;

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: