在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();
    }
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM