Java 实现递归查询Json字符串中的特定key

用递归的方式查询复杂嵌套json字符串中的特定key,并把key的值放入集合中。 

package cn.kk;



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

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * @author :
 * @date :Created in 2023/4/6 16:35
 * @description:
 * @modified By:
 */


public class TestFormJson {
    public  List<JSONObject> optionsList;

    public List<JSONObject> getOptionsList() {
        return optionsList;
    }

    public void setOptionsList(List<JSONObject> optionsList) {
        this.optionsList = optionsList;
    }

    public static void main(String[] args) {
        TestFormJson testFormJson=new TestFormJson();
        testFormJson.setOptionsList(new ArrayList<>());
        JSONObject jsonObject = JSONObject.parseObject(json);
        testFormJson.findOptions(jsonObject);
        System.out.println(testFormJson.getOptionsList().size());
        System.out.println("123");
    }
    public void findOptions(JSONObject obj) {
        for (String key : obj.keySet()) {
            if (key.equals("options")) {
                optionsList.add(obj.getJSONObject(key));
            } else if (obj.get(key) instanceof JSONObject) {
                findOptions(obj.getJSONObject(key));
            } else if (obj.get(key) instanceof JSONArray) {
                JSONArray array = obj.getJSONArray(key);
                for (int i = 0; i < array.size(); i++) {
                    if (array.get(i) instanceof JSONObject) {
                        findOptions(array.getJSONObject(i));
                    }
                }
            }
        }
    }

   public final static  String  json="{\n" +
           "  \"widgetList\": [\n" +
           "    {\n" +
           "      \"key\": 30323,\n" +
           "      \"type\": \"choose-department\",\n" +
           "      \"icon\": \"file-upload-field\",\n" +
           "      \"formItemFlag\": true,\n" +
           "      \"options\": {\n" +
           "        \"name\": \"caecc.iai:udka/dataschemaset/des/anonymous#3deff77f-2d97-4338-8bc4-6f358218e2d5\",\n" +
           "        \"label\": \"名称\",\n" +
           "        \"labelAlign\": \"\",\n" +
           "        \"labelWidth\": null,\n" +
           "        \"tableSequence\": null,\n" +
           "        \"labelHidden\": false,\n" +
           "        \"columnWidth\": \"200px\",\n" +
           "        \"disabled\": false,\n" +
           "        \"hidden\": false,\n" +
           "        \"required\": false,\n" +
           "        \"requiredHint\": \"\",\n" +
           "        \"customRule\": \"\",\n" +
           "        \"customRuleHint\": \"\",\n" +
           "        \"defaultValueIds\": \"\",\n" +
           "        \"defaultValue\": \"撒撒\",\n" +
           "        \"securityLevel\": \"\",\n" +
           "        \"customClass\": [],\n" +
           "        \"labelIconClass\": null,\n" +
           "        \"labelIconPosition\": \"rear\",\n" +
           "        \"labelTooltip\": null,\n" +
           "        \"onCreated\": \"\",\n" +
           "        \"onMounted\": \"\",\n" +
           "        \"onBeforeUpload\": \"\",\n" +
           "        \"onUploadSuccess\": \"\",\n" +
           "        \"onUploadError\": \"\",\n" +
           "        \"onFileRemove\": \"\",\n" +
           "        \"onValidate\": \"\"\n" +
           "      },\n" +
           "      \"id\": \"choosedepartment67005\"\n" +
           "    },\n" +
           "    {\n" +
           "      \"key\": 22367,\n" +
           "      \"type\": \"input\",\n" +
           "      \"icon\": \"text-field\",\n" +
           "      \"formItemFlag\": true,\n" +
           "      \"options\": {\n" +
           "        \"name\": \"caecc.iai:udka/dataschemaset/des/anonymous#6b6aeba7-60b5-49f6-b49d-c4b77a676993\",\n" +
           "        \"label\": \"部门编码\",\n" +
           "        \"labelAlign\": \"\",\n" +
           "        \"type\": \"text\",\n" +
           "        \"defaultValue\": \"\",\n" +
           "        \"placeholder\": \"\",\n" +
           "        \"columnWidth\": \"200px\",\n" +
           "        \"size\": \"\",\n" +
           "        \"labelWidth\": null,\n" +
           "        \"tableSequence\": null,\n" +
           "        \"labelHidden\": false,\n" +
           "        \"readonly\": false,\n" +
           "        \"disabled\": false,\n" +
           "        \"hidden\": false,\n" +
           "        \"clearable\": true,\n" +
           "        \"showPassword\": false,\n" +
           "        \"required\": false,\n" +
           "        \"requiredHint\": \"\",\n" +
           "        \"validation\": \"\",\n" +
           "        \"validationHint\": \"\",\n" +
           "        \"customClass\": \"\",\n" +
           "        \"labelIconClass\": null,\n" +
           "        \"labelIconPosition\": \"rear\",\n" +
           "        \"labelTooltip\": null,\n" +
           "        \"minLength\": null,\n" +
           "        \"maxLength\": null,\n" +
           "        \"showWordLimit\": false,\n" +
           "        \"prefixIcon\": \"\",\n" +
           "        \"suffixIcon\": \"\",\n" +
           "        \"appendButton\": false,\n" +
           "        \"appendButtonDisabled\": false,\n" +
           "        \"buttonIcon\": \"custom-search\",\n" +
           "        \"onCreated\": \"\",\n" +
           "        \"onMounted\": \"\",\n" +
           "        \"onInput\": \"\",\n" +
           "        \"onChange\": \"\",\n" +
           "        \"onFocus\": \"\",\n" +
           "        \"onBlur\": \"\",\n" +
           "        \"onValidate\": \"\",\n" +
           "        \"onAppendButtonClick\": \"\"\n" +
           "      },\n" +
           "      \"id\": \"input116459\"\n" +
           "    },\n" +
           "    {\n" +
           "      \"key\": 22367,\n" +
           "      \"type\": \"input\",\n" +
           "      \"icon\": \"text-field\",\n" +
           "      \"formItemFlag\": true,\n" +
           "      \"options\": {\n" +
           "        \"name\": \"caecc.iai:udka/dataschemaset/des/anonymous#d785b619-192e-438b-8e56-d0e79672a58b\",\n" +
           "        \"label\": \"单位Id\",\n" +
           "        \"labelAlign\": \"\",\n" +
           "        \"type\": \"text\",\n" +
           "        \"defaultValue\": \"\",\n" +
           "        \"placeholder\": \"\",\n" +
           "        \"columnWidth\": \"200px\",\n" +
           "        \"size\": \"\",\n" +
           "        \"labelWidth\": null,\n" +
           "        \"tableSequence\": null,\n" +
           "        \"labelHidden\": false,\n" +
           "        \"readonly\": false,\n" +
           "        \"disabled\": false,\n" +
           "        \"hidden\": false,\n" +
           "        \"clearable\": true,\n" +
           "        \"showPassword\": false,\n" +
           "        \"required\": false,\n" +
           "        \"requiredHint\": \"\",\n" +
           "        \"validation\": \"\",\n" +
           "        \"validationHint\": \"\",\n" +
           "        \"customClass\": \"\",\n" +
           "        \"labelIconClass\": null,\n" +
           "        \"labelIconPosition\": \"rear\",\n" +
           "        \"labelTooltip\": null,\n" +
           "        \"minLength\": null,\n" +
           "        \"maxLength\": null,\n" +
           "        \"showWordLimit\": false,\n" +
           "        \"prefixIcon\": \"\",\n" +
           "        \"suffixIcon\": \"\",\n" +
           "        \"appendButton\": false,\n" +
           "        \"appendButtonDisabled\": false,\n" +
           "        \"buttonIcon\": \"custom-search\",\n" +
           "        \"onCreated\": \"\",\n" +
           "        \"onMounted\": \"\",\n" +
           "        \"onInput\": \"\",\n" +
           "        \"onChange\": \"\",\n" +
           "        \"onFocus\": \"\",\n" +
           "        \"onBlur\": \"\",\n" +
           "        \"onValidate\": \"\",\n" +
           "        \"onAppendButtonClick\": \"\"\n" +
           "      },\n" +
           "      \"id\": \"input106499\"\n" +
           "    }\n" +
           "  ],\n" +
           "  \"formConfig\": {\n" +
           "    \"modelName\": \"组织机构\",\n" +
           "    \"entityId\": \"caecc#organization\",\n" +
           "    \"code\": \"CD\",\n" +
           "    \"refName\": \"撒撒\",\n" +
           "    \"rulesName\": \"rules\",\n" +
           "    \"remark\": \"撒\",\n" +
           "    \"labelWidth\": 80,\n" +
           "    \"labelPosition\": \"left\",\n" +
           "    \"size\": \"\",\n" +
           "    \"labelAlign\": \"label-left-align\",\n" +
           "    \"cssCode\": \"\",\n" +
           "    \"customClass\": [],\n" +
           "    \"functions\": \"\",\n" +
           "    \"layoutType\": \"PC\",\n" +
           "    \"jsonVersion\": 3,\n" +
           "    \"onFormCreated\": \"\",\n" +
           "    \"onFormMounted\": \"\",\n" +
           "    \"onFormDataChange\": \"\"\n" +
           "  }\n" +
           "}";


}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值