关于JSONObject解析json

当遇到非列表形式的JSON数据,如汉中市天气信息,使用JSONObject进行解析是合适的方法。由于数据中可能存在中文和复杂结构,导致自动实体类生成困难,通过查看文档和数据结构,可以手动解析并理解JSON内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果没有list只是object的话,用JSONObject解析接送也是个不错的选择
今天的测试数据是

 {
    "reason": "查询成功!",
    "result": {
        "data": {
            "realtime": {
                "city_code": "101110801",
                "city_name": "汉中",
                "date": "2017-11-04",
                "time": "21:00:00",
                "week": 6,
                "moon": "九月十六",
                "dataUptime": 1509801446,
                "weather": {
                    "temperature": "13",
                    "humidity": "99",
                    "info": "晴",
                    "img": "0"
                },
                "wind": {
                    "direct": "西南风",
                    "power": "1级",
                    "offset": null,
                    "windspeed": null
                }
            },
            "life": {
                "date": "2017-11-4",
                "info": {
                    "chuanyi": [
                        "较舒适",
                        "建议着薄外套、开衫牛仔衫裤等服装。年老体弱者应适当添加衣物,宜着夹克衫、薄毛衣等。"
                    ],
                    "ganmao": [
                        "较易发",
                        "昼夜温差较大,较易发生感冒,请适当增减衣服。体质较弱的朋友请注意防护。"
                    ],
                    "kongtiao": [
                        "较少开启",
                        "您将感到很舒适,一般不需要开启空调。"
                    ],
                    "xiche": [
                        "较适宜",
                        "较适宜洗车,未来一天无雨,风力较小,擦洗一新的汽车至少能保持一天。"
                    ],
                    "yundong": [
                        "适宜",
                        "天气较好,赶快投身大自然参与户外运动,尽情感受运动的快乐吧。"
                    ],
                    "ziwaixian": [
                        "弱",
                        "紫外线强度较弱,建议出门前涂擦SPF在12-15之间、PA+的防晒护肤品。"
                    ]
                }
            },
            "weather": [
                {
                    "date": "2017-11-04",
                    "info": {
                        "day": [
                            "1",
                            "多云",
                            "19",
                            "东北风",
                            "微风",
                            "07:12"
                        ],
                        "night": [
                            "0",
                            "晴",
                            "10",
                            "东北风",
                            "微风",
                            "17:58"
                        ]
                    },
                    "week": "六",
                    "nongli": "九月十六"
                },
                {
                    "date": "2017-11-05",
                    "info": {
                        "dawn": [
                            "0",
                            "晴",
                            "10",
                            "东北风",
                            "微风",
                            "17:58"
                        ],
                        "day": [
                            "2",
                            "阴",
                            "16",
                            "东北风",
                            "微风",
                            "07:13"
                        ],
                        "night": [
                            "2",
                            "阴",
                            "10",
                            "东风",
                            "微风",
                            "17:57"
                        ]
                    },
                    "week": "日",
                    "nongli": "九月十七"
                },
                {
                    "date": "2017-11-06",
                    "info": {
                        "dawn": [
                            "2",
                            "阴",
                            "10",
                            "东风",
                            "微风",
                            "17:57"
                        ],
                        "day": [
                            "1",
                            "多云",
                            "20",
                            "西风",
                            "微风",
                            "07:14"
                        ],
                        "night": [
                            "1",
                            "多云",
                            "10",
                            "西风",
                            "微风",
                            "17:56"
                        ]
                    },
                    "week": "一",
                    "nongli": "九月十八"
                },
                {
                    "date": "2017-11-07",
                    "info": {
                        "dawn": [
                            "1",
                            "多云",
                            "10",
                            "西风",
                            "微风",
                            "17:56"
                        ],
                        "day": [
                            "0",
                            "晴",
                            "20",
                            "东北风",
                            "微风",
                            "07:15"
                        ],
                        "night": [
                            "0",
                            "晴",
                            "11",
                            "东北风",
                            "微风",
                            "17:55"
                        ]
                    },
                    "week": "二",
                    "nongli": "九月十九"
                },
                {
                    "date": "2017-11-08",
                    "info": {
                        "dawn": [
                            "0",
                            "晴",
                            "11",
                            "东北风",
                            "微风",
                            "17:55"
                        ],
                        "day": [
                            "1",
                            "多云",
                            "19",
                            "东北风",
                            "微风",
                            "07:16"
                        ],
                        "night": [
                            "7",
                            "小雨",
                            "11",
                            "东南风",
                            "微风",
                            "17:55"
                        ]
                    },
                    "week": "三",
                    "nongli": "九月二十"
                },
                {
                    "date": "2017-11-09",
                    "info": {
                        "night": [
                            "1",
                            "多云",
                            "8",
                            "东北风",
                            "微风",
                            "19:30"
                        ],
                        "day": [
                            "3",
                            "阵雨",
                            "16",
                            "东北风",
                            "微风",
                            "07:30"
                        ]
                    },
                    "week": "四",
                    "nongli": "九月廿一"
                },
                {
                    "date": "2017-11-10",
                    "info": {
                        "night": [
                            "3",
                            "阵雨",
                            "7",
                            "东北风",
                            "微风",
                            "19:30"
                        ],
                        "day": [
                            "3",
                            "阵雨",
                            "15",
                            "东北风",
                            "微风",
                            "07:30"
                        ]
                    },
                    "week": "五",
                    "nongli": "九月廿二"
                }
            ],
            "f3h": {
                "temperature": [
                    {
                        "jg": "20171104200000",
                        "jb": "13"
                    },
                    {
                        "jg": "20171104230000",
                        "jb": "12"
                    },
                    {
                        "jg": "20171105020000",
                        "jb": "11"
                    },
                    {
                        "jg": "20171105050000",
                        "jb": "10"
                    },
                    {
                        "jg": "20171105080000",
                        "jb": "11"
                    },
                    {
                        "jg": "20171105110000",
                        "jb": "14"
                    },
                    {
                        "jg": "20171105140000",
                        "jb": "15"
                    },
                    {
                        "jg": "20171105170000",
                        "jb": "16"
                    },
                    {
                        "jg": "20171105200000",
                        "jb": "13"
                    }
                ],
                "precipitation": [
                    {
                        "jg": "20171104200000",
                        "jf": "0"
                    },
                    {
                        "jg": "20171104230000",
                        "jf": "0"
                    },
                    {
                        "jg": "20171105020000",
                        "jf": "0"
                    },
                    {
                        "jg": "20171105050000",
                        "jf": "0"
                    },
                    {
                        "jg": "20171105080000",
                        "jf": "0"
                    },
                    {
                        "jg": "20171105110000",
                        "jf": "0"
                    },
                    {
                        "jg": "20171105140000",
                        "jf": "0"
                    },
                    {
                        "jg": "20171105170000",
                        "jf": "0"
                    },
                    {
                        "jg": "20171105200000",
                        "jf": "0"
                    }
                ]
            },
            "pm25": {
                "key": "Hanzhong",
                "show_desc": 0,
                "pm25": {
                    "curPm": "90",
                    "pm25": "67",
                    "pm10": "117",
                    "level": 2,
                    "quality": "良",
                    "des": "可以正常在户外活动,易敏感人群应减少外出"
                },
                "dateTime": "2017年11月04日20时",
                "cityName": "汉中"
            },
            "jingqu": "",
            "jingqutq": "",
            "date": "",
            "isForeign": "0",
            "partner": {
                "title_word": "中国",
                "show_url": "www.weather.com.cn",
                "base_url": "http:\/\/j.www.haosou.com\/?u=http%3A%2F%2Fwww.weather.com.cn%2Fweather%2F101110801.shtml&m=073ae0&from=juhe&type=weather"
            }
        }
    },
    "error_code": 0
}

这是聚合数据返回的汉中市天气的数据
这里写图片描述
可能是因为中文太多了或者这个数据结构中空格太多了,我们的歌颂format无法自动生成实体类

JSONObject jsonObject = new JSONObject(string);
String result = jsonObject.getString("result");
JSONObject jsonObject1 = new JSONObject(result);
data = jsonObject1.getString("data");
JSONObject jsonObject2 = new JSONObject(data);
 //当前时间的天气情况
realtime = jsonObject2.getString("realtime");
JSONObject object = new JSONObject(realtime);
tvCity.setText(object.getString("city_name"));
 tvTemp.setText(new JSONObject(object.getString("weather")).getString("temperature") + "℃");
String weatherInfo = new JSONObject(object.getString("weather")).getString("info");
tvWeather.setText(weatherInfo);

突然发现以前的项目中还有
JsonArray
于是找了下,没有打印json找了下,文档看了下数据结构
这里写图片描述


 Gson gson=new Gson();
Type type=new TypeToken<JsonObject>(){}.getType();
JsonObject object=gson.fromJson(jsonMedicalAddress,type);
Log.i("jsonMedicalAddress",jsonMedicalAddress);
JsonObject object1=object.getAsJsonObject("data");
JsonArray jsonArray=object1.getAsJsonArray("附近医院");
                                    //  按照医院距离列表的迭代器
                                    Iterator it=jsonArray.iterator();
                                    while (it.hasNext()){
                                        JsonElement e=(JsonElement)it.next();
                                        //JsonElement转换为JavaBean
                                        // 医院实体类   Medical
                                        Medical medical=gson.fromJson(e,Medical.class);
                                        list.add(medical);
                                    }
                                    if(list.size()!=0){
                                        Log.i("hospitals.size",list.toString());
                                        hospitalAdapter=new HospitalAdapter(list,getApplicationContext(),lng,lat,true);
                                        listView.setAdapter(hospitalAdapter);
                                    }

业精于勤荒于嬉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值