Java解析JSON的通用方法

    遇到的问题一般Java不方便解析JSON:

    1、出现JSON里面出现大量嵌套现象,如下JSON其中msg_item中嵌套了multi_item和send_stat的方式

    2、出现几个对象列表的形式

然而此时却只需要部分数据,因此感觉不需要将每个字段都加到一个类里面来定义成一个对象。因此可以使用

    JSONObject jo = JSONObject.fromObject(jsonString);

    JSONArray jsons = jo.getJSONArray("msg_item");

方式来进行解析。

    例如:如下JSON,即jsonString为如下信息

{
    "msg_item": [
        {
            "id": 200520118,
            "type": 1,
            "fakeid": "953372741",
            "nick_name": "WWCCA",
            "date_time": 1405576147,
            "content": "CCCA",
            "source": "",
            "msg_status": 4,
            "has_reply": 0,
            "refuse_reason": "",
            "multi_item": [],
            "to_uin": 3092715931,
            "send_stat": {
                "total": 0,
                "succ": 0,
                "fail": 0
            }
        },
        {
            "id": 200520110,
            "type": 1,
            "fakeid": "1437169916",
            "nick_name": "QS",
            "date_time": 1405575637,
            "content": "DDDW",
            "source": "",
            "msg_status": 4,
            "has_reply": 0,
            "refuse_reason": "",
            "multi_item": [],
            "to_uin": 3092715931,
            "send_stat": {
                "total": 0,
                "succ": 0,
                "fail": 0
            }
        }
    ]
}
具体解决方案如下所示

JSONObject jo = JSONObject.fromObject(personlistjson);
JSONArray jsons = jo.getJSONArray("msg_item");
int jsonLength = jsons.size();
Person ptemp = new Person();
for (int i = 0; i < jsonLength; i++) {
   JSONObject tempJson = JSONObject.fromObject(jsons.get(i));
   ptemp.setNickName(tempJson.get("nick_name").toString());
   ptemp.setFakeId(tempJson.get("fakeid").toString());
   ptemp.setContent(tempJson.get("content").toString());
   ptemp.setDateTime(tempJson.get("date_time").toString());
   persons.add(ptemp);
}
List<Person> persons即可获得所有需要的信息。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值