多层嵌套JSON格式数据的快速解析

无简介

大家怎么还在搜这个问题啊,这都是三年前的东西了,只可以作为参考哈 可以直接使用Gson或者fastjson 以下为原内容


测试JSON数据

{
“code”: “200”,
“message”: “测试数据”,
“data”: {
“imgs”: [
http://7xw2my.com1.z0.glb.clouddn.com/qiniu/2016-7/0f0b37c0786efa955beec97b56fcda6f.jpg
],
“kk”: [
{
“sdfdsf”: “sss”
},
{
“sdfdsf”: “ssss”
}
]
}
}

如果遇到这样的JSON格式的数据,你会怎样去解析? 每次碰到它都会很烦躁,所以写了下面的东西,一次性把它给弄出来,省的以后麻烦了。 首先要先创建相对于JSON数据的Bean

Bean的创建规则

如果属性对应的是一个字符串或数字,其修饰符使用String -----------------如(public String code;) 如果属性对应的是一个JSONArray,其修饰符使用ArrayList,这个里面的Bean要根据JSONArray里面的JSONObject进行编写。 -----------------如(public ArrayList kk;) 如果属性对应的是一个JSONObject,其修饰符使用对象的类名----如:(public static class MyData) 下面是按照上面的规则写好的一个Bean

public class Bean {
private String code;
private String message;
private MyData data;

public String getMessage() {
    return message;
}

public void setMessage(String message) {
    this.message = message;
}

public static class Data2 {
    private String sdfdsf;

    public String getSdfdsf() {
        return sdfdsf;
    }

    public void setSdfdsf(String sdfdsf) {
        this.sdfdsf = sdfdsf;
    }

}

public static class MyData {
    private ArrayList kk;
    private String\[\] imgs;

    public ArrayList getKk() {
        return kk;
    }

    public void setKk(ArrayList kk) {
        this.kk = kk;
    }


    public String\[\] getImgs() {
        return imgs;
    }

    public void setImgs(String\[\] imgs) {
        this.imgs = imgs;
    }

}

public MyData getData() {
    return data;
}

public void setData(MyData data) {
    this.data = data;
}

public String getCode() {
    return code;
}

public void setCode(String code) {
    this.code = code;
}

}

解析的时候只要一句话:

Bean s = (Bean) (SumileJson.parse(str, Bean.class));

解析完了,然后来看怎样获得所有的数据:

String co = "{\“code\”:\“200\”,\“message\”:\“测试数据\”,\“data\”:{\“imgs\”:[\"http://7xw2my.com1.z0.glb.clouddn.com/qiniu/2016-7/0f0b37c0786efa955beec97b56fcda6f.jpg\“],\“kk\”:[{\“sdfdsf\”:\“sss\”},{\“sdfdsf\”:\“ssss\”}]}}”;
YingYinBeans bean = (YingYinBeans) SumileJson.parse(co, YingYinBeans.class);
System.out.println(bean.getData().getImgs()[0]);
System.out.println(bean.getData().getKk().get(0).getSdfdsf());

程序输出的结果:

http://7xw2my.com1.z0.glb.clouddn.com/qiniu/2016-7/0f0b37c0786efa955beec97b56fcda6f.jpg
sss

**注意:**打包的时候,如果要混淆,记得把你的Bean也混淆了。因为是反射获取的内容。 [gb href=‘https://github.com/wudkj/SumileJSON’]开源地址[/gb]

-------------本文结束  感谢您的阅读-------------
下次一定