Java对json和jsonarray字符串的解析

导读:本篇文章讲解 Java对json和jsonarray字符串的解析,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

前言:
json 就是键值对关系,和Map很像,两者都可以嵌套其他键值对关系或者其他数据结构。

1.举个简单 json 字符串例子

String jsonStr =  "{" +
                "\"list\":[\"第一条数据\",\"第二条数据\"]," +
                "\"data\":[{\"url\":\"baidu.com\",\"content\":\"百度搜索引擎\"},{\"url\":\"google.com\",\"content\":\"谷歌搜索引擎\"}]," +
                "\"message\":\"OK\"" +
                "}";

上面字符串有三种常见 json 格式
1)message,属于最常见的键值对,属于最标准的 json 字符串;
2)list,是列表,其值属于 jsonarray 格式;
3)data,属于键值对里面嵌套键值对,其值也属于 jsonarray 格式

2.下面就对这三种格式进行解析

首先声明依赖的包(除了 org 的包,还有 ali 的 fastjson 也很好,方法不同,功能没差)

        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20180813</version>
        </dependency>

贴代码

import org.json.JSONArray;
import org.json.JSONObject;
import java.util.Set;

public class JsonAnalysis {
    public static void main(String[] args){
        String jsonStr =  "{" +
                "\"list\":[\"第一条数据\",\"第二条数据\"]," +
                "\"data\":[{\"url\":\"baidu.com\",\"content\":\"百度搜索引擎\"},{\"url\":\"google.com\",\"content\":\"谷歌搜索引擎\"}]," +
                "\"message\":\"OK\"" +
                "}";

        JSONObject jsonObject = new JSONObject(jsonStr);

        //获取json对象的关键字,这个方法用于暴露未知json字符串结构
        Set<String> set = jsonObject.keySet();
        for(String str:set){
            System.out.println("json对象关键字:"+str);
        }

        //解析 message
        String message = jsonObject.optString("message","");//建议使用opt(如果没有关键字会把后面的值赋给message)
        System.out.println("message:"+message);

        //解析 list
        JSONArray jsonArray = jsonObject.optJSONArray("list");
        for(Object o : jsonArray){ //不能直接用String声明,会出错
            System.out.println(o.toString());
        }

        //解析 data
        JSONArray jsonArrayData = jsonObject.optJSONArray("data");//如果没有data会赋值null,用get的话会报错
        for (Object o : jsonArrayData){ //需要转成JSONObject再解析
            JSONObject objectToJson = (JSONObject) o;
            System.out.print("url:"+objectToJson.optString("url","") + ",");
            System.out.print("content:"+objectToJson.optString("content",""));
            System.out.println();
        }
    }
}

3.输出

json对象关键字:data
json对象关键字:list
json对象关键字:message
message:OK
第一条数据
第二条数据
url:baidu.com,content:百度搜索引擎
url:google.com,content:谷歌搜索引擎

4.注意:
其中解析 data 时,因为里面嵌套的是 json 标准对象,所以要转换成 json 对象进行处理。

与君共勉,祝君进步。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/16639.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!