美文网首页
万能解析json

万能解析json

作者: 易瑞 | 来源:发表于2017-08-13 18:24 被阅读0次

    最近很多朋友问到我解析Json的问题,很多都是太复杂,解析起来很麻烦,但大部分都是使用工具进行解析,比如Gson之类的,但是这些有个问题就是要创建一个实体类bean,但是往往在很多开发过程中,后台返回数据是会随着迭代而改变的,这样创建的实体类bean可能也要改变,这里我就说说自己解析的一些心得。

    首先我并没有用到第三方的解析工具,而是单纯的使用系统提供的JsonObject和JsonArray。然后获取到的数据字段存储我是用到的HashMap,这样就对于实体类很吻合了,key对应的实体类里面变量名字,value对应实体类里的变量值。如果有集合就可以在HashMap外面套上Arraylist之类的。

    下面就开始提供代码块:

    privateHashMap stringToJsonObject(String response) {

    try{

    JSONObject jsa =newJSONObject(response);

    returnJsonToHashMap(jsa);

    }catch(JSONException e) {

    e.printStackTrace();

    returnnull;

    }

    }

    privateHashMap JsonToHashMap(JSONObject jsa) {

    HashMap hashmap =newHashMap<>();

    try{

    for(Iterator keyStr = jsa.keys(); keyStr.hasNext(); ) {

    String key1 = keyStr.next().trim();

    if(jsa.get(key1)instanceofJSONObject) {

    hashmap.put(key1, jsa.get(key1));

    }

    }

    }catch(JSONException e) {

    e.printStackTrace();

    }

    returnhashmap;

    }

    这样就可以将一个jsonObject转换成HashMap了,但是HashMap里面还是含有类似Json的,那就再重复上面操作就行了。

    下面再来解析JsonObject

    publicArrayList> dataListTmp =newArrayList>();

    ry {

    JSONObject jsonObject =newJSONObject(respanse);

    JSONArray jsonArray =newJSONArray(jsonObject.getString("result"));

    JSONObject jsonObject1 =newJSONObject(jsonArray.get(0).toString());

    JSONArray jsonArray1 =newJSONArray(jsonObject1.getString("Items"));

    for(inti =0; i < jsonArray1.length(); i++) {

    JSONObject jsoo = jsonArray1.getJSONObject(i);

    HashMap map1 =newHashMap();

    Iterator it = jsoo.keys();

    while(it.hasNext()) {

    String key = (String) it.next();

    String value = jsoo.getString(key);

    map1.put(key, value);

    }

    dataListTmp.add(map1);

    }

    }catch(JSONException e) {

    e.printStackTrace();

    }

    通过一个Iterator迭代一下就可以获取到key和value,具体还是需要看看具体需求,随机应变。先将json分析一下,一般公司后台提供json都有一定规律的,因此一些解析方式可以在项目中提取出来,完全可以复用,再也不用去新建bean实体类了,也抛开了第三方工具的使用。

    csdn项目地址:http://blog.csdn.net/greatdaocaoren/article/details/73826711

    相关文章

      网友评论

          本文标题:万能解析json

          本文链接:https://www.haomeiwen.com/subject/aiuerxtx.html