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

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;
    }
}


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。