Java代码如何快速解析JSON字符串,Java解析json字符串,逻辑清晰一看就懂

以下举例数据结构:

{

    "error": 0,

    "status": "success",

    "results": [

        {

            "currentCity": "青岛",

            "index": [

                {

                    "title": "穿衣",

                    "zs": "较冷",

                    "tipt": "穿衣指数",

                    "des": "建议着厚外套加毛衣等服装。年老体弱者宜着大衣、呢外套加羊毛衫。"

                },

                {

                    "title": "紫外线强度",

                    "zs": "中等",

                    "tipt": "紫外线强度指数",

                    "des": "属中等强度紫外线辐射天气,外出时建议涂擦SPF高于15、PA+的防晒护肤品,戴帽子、太阳镜。"

                }

            ]

        }

    ]

}

简单来说:

“key”:“value” --> 此时value为String

“key":0 --> 此时value为int

“key”:{“k1”:“v1”} --> 此时value为JSONObject

“key”:[v] --> 此时value为JSONArray

解析代码:

public class Test {



public static void main(String[] args) {



    String s = "{\"error\":0,\"status\":\"success\",\"results\":[{\"currentCity\":\"青岛\",\"index\":[{\"title\":\"穿衣\",\"zs\":\"较冷\",\"tipt\":\"穿衣指数\",\"des\":\"建议着厚外套加毛衣等服装。年老体弱者宜着大衣、呢外套加羊毛衫。\"},{\"title\":\"紫外线强度\",\"zs\":\"最弱\",\"tipt\":\"紫外线强度指数\",\"des\":\"属弱紫外线辐射天气,无需特别防护。若长期在户外,建议涂擦SPF在8-12之间的防晒护肤品。\"}],}]}";


    //也可以用alibaba的JSON对象替换,JSON.pareObject(s),相应的下边的方法也有所不同

    JSONObject jsonObject = JSONObject.fromObject(s);



    //提取出error为 0

    int error = jsonObject.getInt("error");

    System.out.println("error:" + error);



    //提取出status为 success

    String status = jsonObject.getString("status");

    System.out.println("status:" + status);   



    //注意:results中的内容带有中括号[],所以要转化为JSONArray类型的对象

    JSONArray result = jsonObject.getJSONArray("results");



    for (int i = 0; i < result.size(); i++) {

        //提取出currentCity为 青岛

        String currentCity = result.getJSONObject(i).getString("currentCity");

        System.out.println("currentCity:" + currentCity);



        //注意:index中的内容带有中括号[],所以要转化为JSONArray类型的对象

        JSONArray index = result.getJSONObject(i).getJSONArray("index");



        for (int j = 0; j < index.size(); j++) {

            String title = index.getJSONObject(j).getString("title");

            System.out.println("title:" + title);

            String zs = index.getJSONObject(j).getString("zs");

            System.out.println("zs:" + zs);

            String tipt = index.getJSONObject(j).getString("tipt");

            System.out.println("tipt:" + tipt);

            String des = index.getJSONObject(j).getString("des");

            System.out.println("des:" + des);

        }

    }

}

}

当解析json串如下,我们要获取数据该如何解析:

"index": {

                "79002":{

                    "title": "穿衣",

                    "zs": "较冷",

                    "tipt": "穿衣指数",

                    "des": "建议着厚外套加毛衣等服装。年老体弱者宜着大衣、呢外套加羊毛衫。"

                },

                "14314":{

                    "title": "紫外线强度",

                    "zs": "中等",

                    "tipt": "紫外线强度指数",

                    "des": "属中等强度紫外线辐射天气,外出时建议涂擦SPF高于15、PA+的防晒护肤品,戴帽子、太阳镜。"

                },
                .....

            }

        可以看到key-value中的key是不固定的,我们要如何获取所有数据请看下边的代码:

    public static void main(String[] args) {
        String s="\"index\": { \"79002\":{ \"title\": \"穿衣\", \"zs\": \"较冷\", \"tipt\": \"穿衣指数\", \"des\": \"建议着厚外套加毛衣等服装。年老体弱者宜着大衣、呢外套加羊毛衫。\" }, \"14314\":{ \"title\": \"紫外线强度\", \"zs\": \"中等\", \"tipt\": \"紫外线强度指数\", \"des\": \"属中等强度紫外线辐射天气,外出时建议涂擦SPF高于15、PA+的防晒护肤品,戴帽子、太阳镜。\" }, ..... }";
        JSONObject indexParse= JSON.parseObject(s);
        JSONObject data=indexParse.getJSONObject("index");
        for (Map.Entry<String, Object> entry : data.entrySet()) {
            System.out.println(entry.getKey());
            System.out.println(entry.getValue());
        }

    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等到鸡吃完米

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值