软件测试

java使用fastjson解析复杂json,根据key返回va

2020-07-12  本文已影响0人  明小五

1、引入jar包

  <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.68</version>
   </dependency>

2、代码

package util;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONException;
import com.alibaba.fastjson.JSONObject;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class JsonUtil {
    private  List<Object> list = new ArrayList<>();

    /**
     *如果存在多个相同的key,本方法获取的是第一个key的值
     */
    public  Object getValue(String json,String key){
        list.clear();
        AllValue(json,key);
        if (list.isEmpty()){
            throw new JSONException("传入的json没有指定key的值:" + key);
        }
        return list.get(0);
    }

    /**
     * 解析JSONObject 数据,返回所有的key所对应的值,存入list集合。
     */
    public  List<Object> getAllvalue(String json,String key){
        list.clear();
        return AllValue(json,key);
    }

    private  List<Object> AllValue(Object str,String key) {

        String str$ = String.valueOf(str).trim();
        if (!(str$.startsWith("{") || str$.startsWith("["))) {
            return null;
        }
        Object json$ = JSONObject.parse(str$);
        if (json$ instanceof JSONObject){
            foreachObj(str$,key);
        }else if (json$ instanceof JSONArray){
            JSONArray jsonArray2 = JSON.parseArray(str$);
            for (int j = 0; j < jsonArray2.size(); j++) {
                String obj = jsonArray2.getString(j);
                if (obj.startsWith("[")) {
                    AllValue(obj,key);
                } else {
                    foreachObj(obj,key);
                }
            }
        }
        return list;
    }
    private List<Object> foreachObj(String object, String key){
        if (!( object.startsWith("[") || object.startsWith("{") )){
            return null;
        }
        JSONObject object1 = JSON.parseObject(object);
        for (Map.Entry<String,Object> entry : object1.entrySet()){
            if (key.equals(entry.getKey())){
                list.add(entry.getValue());
            }
            String str$ = JSON.toJSONString(entry.getValue());
            AllValue(str$,key);
        }
        return list;
    }
}


上一篇 下一篇

猜你喜欢

热点阅读