zoukankan      html  css  js  c++  java
  • 在json格式的数据里筛选出指定的key值

    • 在全国城市数据json格式的文本里筛选出几个指定的key

    • 部分json格式数据如下

        {"sysCatPk": 459,
        "prntSysCatPk": null,
        "prntCd": "9100",
        "prntNmEn": "china",
        "prntNmCn": "中国",
        "cd": "9100.100",
        "nmEn": "beijingshi",
        "nmCn": "北京市",
        "methSysCatPk": 252,
        "methCd": "9100",
        "methNmEn": "china",
        "methNmCn": "中国",
        "desc": "",
        "viewSeq": "",
        "busSeq": "",
        "value": null,
        "level": 1,
        "childSysCatDtozList": [{
        	"sysCatPk": 460,
        	"prntSysCatPk": 459,
        	"prntCd": "9100.100",
        	"prntNmEn": "beijingshi",
        	"prntNmCn": "北京市",
        	"cd": "9100.100.100",
        	"nmEn": "beijingshi",
        	"nmCn": "北京市",
        	"methSysCatPk": 252,
        	"methCd": "9100",
        	"methNmEn": "china",
        	"methNmCn": "中国",
        	"desc": "",
        	"viewSeq": "",
        	"busSeq": "",
        	"value": null,
        	"level": 2,
        	"childSysCatDtozList": [{
        		"sysCatPk": 461,
        		"prntSysCatPk": 460,
        		"prntCd": "9100.100.100",
        		"prntNmEn": "beijingshi",
        		"prntNmCn": "北京市",
        		"cd": "9100.100.100.100",
        		"nmEn": "dongchengqu",
        		"nmCn": "东城区",
        		"methSysCatPk": 252,
        		"methCd": "9100",
        		"methNmEn": "china",
        		"methNmCn": "中国",
        		"desc": "",
        		"viewSeq": "",
        		"busSeq": "",
        		"value": null,
        		"level": 3,
        		"childSysCatDtozList": [],
        		"top": false,
        		"leaf": true
        	},
        	{
        		"sysCatPk": 462,
        		"prntSysCatPk": 460,
        		"prntCd": "9100.100.100",
        		"prntNmEn": "beijingshi",
        		"prntNmCn": "北京市",
        		"cd": "9100.100.100.110",
        		"nmEn": "xichengqu",
        		"nmCn": "西城区",
        		"methSysCatPk": 252,
        		"methCd": "9100",
        		"methNmEn": "china",
        		"methNmCn": "中国",
        		"desc": "",
        		"viewSeq": "",
        		"busSeq": "",
        		"value": null,
        		"level": 3,
        		"childSysCatDtozList": [],
        		"top": false,
        		"leaf": true
        	},
        	{
        		"sysCatPk": 463,
        		"prntSysCatPk": 460,
        		"prntCd": "9100.100.100",
        		"prntNmEn": "beijingshi",
        		"prntNmCn": "北京市",
        		"cd": "9100.100.100.120",
        		"nmEn": "chongwenqu",
        		"nmCn": "崇文区",
        		"methSysCatPk": 252,
        		"methCd": "9100",
        		"methNmEn": "china",
        		"methNmCn": "中国",
        		"desc": "",
        		"viewSeq": "",
        		"busSeq": "",
        		"value": null,
        		"level": 3,
        		"childSysCatDtozList": [],
        		"top": false,
        		"leaf": true
        	}],
        	"top": false,
        	"leaf": false
        }],
        "top": true,
        "leaf": false
      }
      
    • 需要的json格式如下,只选取三个字段

        [{"sysCatPk":"459","nmCn":"北京市","childSysCatDtozList":
        		[{"sysCatPk":"460","nmCn":"北京市","childSysCatDtozList":
        			[{"sysCatPk":"461","childSysCatDtozList":[],"nmCn":"东城区"},
        			{"sysCatPk":"462","childSysCatDtozList":[],"nmCn":"西城区"},
        			{"sysCatPk":"463","childSysCatDtozList":[],"nmCn":"崇文区"},
        			{"sysCatPk":"464","childSysCatDtozList":[],"nmCn":"宣武区"},
        			{"sysCatPk":"465","childSysCatDtozList":[],"nmCn":"朝阳区"},
        			{"sysCatPk":"466","childSysCatDtozList":[],"nmCn":"丰台区"},
        			{"sysCatPk":"467","childSysCatDtozList":[],"nmCn":"石景山区"},
        			{"sysCatPk":"468","childSysCatDtozList":[],"nmCn":"海淀区"},
        			{"sysCatPk":"469","childSysCatDtozList":[],"nmCn":"门头沟区"},
        			{"sysCatPk":"470","childSysCatDtozList":[],"nmCn":"房山区"},
        			{"sysCatPk":"471","childSysCatDtozList":[],"nmCn":"通州区"},
        			{"sysCatPk":"472","childSysCatDtozList":[],"nmCn":"顺义区"},
        			{"sysCatPk":"473","childSysCatDtozList":[],"nmCn":"昌平区"},
        			{"sysCatPk":"474","childSysCatDtozList":[],"nmCn":"大兴区"},
        			{"sysCatPk":"475","childSysCatDtozList":[],"nmCn":"平谷区"},
        			{"sysCatPk":"476","childSysCatDtozList":[],"nmCn":"怀柔区"},
        			{"sysCatPk":"477","childSysCatDtozList":[],"nmCn":"密云县"},
        			{"sysCatPk":"478","childSysCatDtozList":[],"nmCn":"延庆县"}
        		}]
        }]
      
    • 实现方法:

      • 创建一个实体类
      @Data
      public class City {
      		private String sysCatPk;
      		private String nmCn;
       	private List<City> childSysCatDtozList;
      }
      
      • 从文本中读取json数据
      public class TextRead {
        public static String readFileContent(String fileName) {
           File file = new File(fileName);
           BufferedReader reader = null;
           StringBuffer sbf = new StringBuffer();
           try {
              reader = new BufferedReader(new FileReader(file));
              String tempStr;
              while ((tempStr = reader.readLine()) != null) {
                  sbf.append(tempStr);
              }
              reader.close();
              return sbf.toString();
            } catch (IOException e) {
              e.printStackTrace();
            } finally {
              if (reader != null) {
                  try {
                      reader.close();
                  } catch (IOException e1) {
                      e1.printStackTrace();
                  }
              }
          }
          	return sbf.toString();
      	}
      }
      
      • 转换
       public static void main(String[] asg) throws IOException {
             String str = TextRead.readFileContent("C:\Users\mengzhao\Desktop\全国城市数据json格式.txt");
             JSONArray array = JSONArray.parseArray(str);
             List<City> cities = array.toJavaList(City.class);
             Object json = JSONArray.toJSON(cities);
             File file = new File("C:\Users\mengzhao\Desktop\全国城市数据json格式1.txt");
             Writer out = new FileWriter(file);
             out.write(json.toString());
             out.close();
      }
      
  • 相关阅读:
    【LeetCode】205. Isomorphic Strings
    Syscall param open(filename) points to unaddressable byte(s)
    五种主要多核并行编程方法分析与比较
    计算机时间复杂度和空间复杂度
    CUDA学习笔记(二)【转】
    CUDA学习笔记(一)【转】
    CUDA Thread Indexing
    Intel MKL函数,如何得到相同的计算结果?【转】
    CUDA编程
    GPU(CUDA)学习日记(十一)------ 深入理解CUDA线程层次以及关于设置线程数的思考
  • 原文地址:https://www.cnblogs.com/mengzhao/p/13852743.html
Copyright © 2011-2022 走看看