栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java将复杂json数据读取并转化成List<Map>

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java将复杂json数据读取并转化成List<Map>

需求:将如下内容的json文件中的内容用文件流读取并转化成List格式

{
	"subGuid":"491a74fd-8312-11e7-9c1a-fa163e2a6242",
	"name":"开发组",
	"id":"69c382af-8312-11e7-9c1a-fa163e2a6242",
	"type":"rolegroup",
	"childs":[
		{
			"subGuid":"491a74fd-8312-11e7-9c1a-fa163e2a6242",
			"name":"aa",
			"id":"02b99d0c-4aa8-11e8-8f36-fa163e2a6242",
			"type":"role"
		},
		{
			"subGuid":"491a74fd-8312-11e7-9c1a-fa163e2a6242",
			"name":"测试",
			"id":"4a1c4bb1-cf49-11e7-97de-fa163e2a6242",
			"type":"role"
		},
		{
			"subGuid":"491a74fd-8312-11e7-9c1a-fa163e2a6242",
			"name":"pro_new",
			"id":"74ebbe7a-4ab6-11e8-8f36-fa163e2a6242",
			"type":"role"
		},
		{
			"subGuid":"491a74fd-8312-11e7-9c1a-fa163e2a6242",
			"name":"开发",
			"id":"77488250-8312-11e7-9c1a-fa163e2a6242",
			"type":"role"
		},
		{
			"subGuid":"491a74fd-8312-11e7-9c1a-fa163e2a6242",
			"name":"新",
			"id":"d775a9b8-49b9-11e8-8f36-fa163e2a6242",
			"type":"role"
		}
	]
}{
	"subGuid":"491a74fd-8312-11e7-9c1a-fa163e2a6242",
	"name":"潘怡成学习",
	"id":"f39b319f-3b1f-11e9-a8a7-50465d555ba3",
	"type":"rolegroup",
	"childs":[
		{
			"subGuid":"491a74fd-8312-11e7-9c1a-fa163e2a6242",
			"name":"学习",
			"id":"00640d30-3b20-11e9-a8a7-50465d555ba3",
			"type":"role"
		}
	]
}

demo

 

package com.gisquest.platform.utils;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSON;
import com.gisquest.platform.common.utils.FileUtils;

public class ParseFile {
	
	public static void parseJonFile() throws IOException {
	   try {
		   //读取json文件并转化为list格式	
		   File file = new File("E:\demoFile\智能表单部.json");
           String jsonString = FileUtils.readFileToString(file, "UTF-8");
           //jsonString结果不是json数组格式的字符串这里需要拼接成json数组格式的字符串
           String  jsonArrayString = String.format("%s%s%s", "[",jsonString,"]");
           List list =  JSON.parseArray(jsonArrayString, Map.class);
		   System.out.println(list.toString());
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) throws IOException {
		parseJonFile();
	}
	
}

运行结果

[{subGuid=491a74fd-8312-11e7-9c1a-fa163e2a6242, name=开发组, id=69c382af-8312-11e7-9c1a-fa163e2a6242, type=rolegroup, childs=[{"subGuid":"491a74fd-8312-11e7-9c1a-fa163e2a6242","name":"aa","id":"02b99d0c-4aa8-11e8-8f36-fa163e2a6242","type":"role"},{"subGuid":"491a74fd-8312-11e7-9c1a-fa163e2a6242","name":"测试","id":"4a1c4bb1-cf49-11e7-97de-fa163e2a6242","type":"role"},{"subGuid":"491a74fd-8312-11e7-9c1a-fa163e2a6242","name":"pro_new","id":"74ebbe7a-4ab6-11e8-8f36-fa163e2a6242","type":"role"},{"subGuid":"491a74fd-8312-11e7-9c1a-fa163e2a6242","name":"开发","id":"77488250-8312-11e7-9c1a-fa163e2a6242","type":"role"},{"subGuid":"491a74fd-8312-11e7-9c1a-fa163e2a6242","name":"新","id":"d775a9b8-49b9-11e8-8f36-fa163e2a6242","type":"role"}]}, {subGuid=491a74fd-8312-11e7-9c1a-fa163e2a6242, name=潘怡成学习, id=f39b319f-3b1f-11e9-a8a7-50465d555ba3, type=rolegroup, childs=[{"subGuid":"491a74fd-8312-11e7-9c1a-fa163e2a6242","name":"学习","id":"00640d30-3b20-11e9-a8a7-50465d555ba3","type":"role"}]}]

 

 分析结果

发现只有外部的的转成Map对象,而内部childs中的数据还是json格式的字符串显示 

改进

package com.gisquest.platform.utils;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSON;
import com.gisquest.platform.common.utils.FileUtils;

public class ParseFile {
	
	public static void parseJonFile() throws IOException {
	   try {
		   //读取json文件并转化为list格式	
		   File file = new File("E:\demoFile\智能表单部.json");
           String jsonString = FileUtils.readFileToString(file, "UTF-8");
           //jsonString结果不是json数组格式的字符串这里需要拼接成json数组格式的字符串
           String  jsonArrayString = String.format("%s%s%s", "[",jsonString,"]");
           List list =  JSON.parseArray(jsonArrayString, Map.class);
           List> roleGroups = new ArrayList<>();
           List> roles = new ArrayList<>();
           
           for (Map map : list) {
        	   String type =String.valueOf(map.get("type"));
        	   if("rolegroup".equals(type)) {
        		   Map group  = new HashMap();
        		   group.put("id", map.get("id").toString());
        		   group.put("type", map.get("type").toString());
        		   group.put("name", map.get("name").toString());
        		   group.put("subGuid", map.get("subGuid").toString());
        		   roleGroups.add(group);
        		   if(map.containsKey("childs")) {
        			   String childs = String.valueOf(map.get("childs"));
        			   List listChilds =  JSON.parseArray(childs, Map.class);
        			   for (Map map2 : listChilds) {
        				   Map roleMap  = new HashMap();
        				   roleMap.put("id", map2.get("id").toString());
        				   roleMap.put("type", map2.get("type").toString());
        				   roleMap.put("name", map2.get("name").toString());
        				   roleMap.put("subGuid", map2.get("subGuid").toString());
        				   roles.add(roleMap);
				     	}
        		   }
        	   }
		   }
		   System.out.println(roleGroups.toString());
		   System.out.println(roles.toString());
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}
	
	
	
	
	
	
	public static void main(String[] args) throws IOException {
		parseJonFile();
	}
	
}

运行显示

[{subGuid=491a74fd-8312-11e7-9c1a-fa163e2a6242, name=开发组, id=69c382af-8312-11e7-9c1a-fa163e2a6242, type=rolegroup}, {subGuid=491a74fd-8312-11e7-9c1a-fa163e2a6242, name=潘怡成学习, id=f39b319f-3b1f-11e9-a8a7-50465d555ba3, type=rolegroup}]
[{subGuid=491a74fd-8312-11e7-9c1a-fa163e2a6242, name=aa, id=02b99d0c-4aa8-11e8-8f36-fa163e2a6242, type=role}, {subGuid=491a74fd-8312-11e7-9c1a-fa163e2a6242, name=测试, id=4a1c4bb1-cf49-11e7-97de-fa163e2a6242, type=role}, {subGuid=491a74fd-8312-11e7-9c1a-fa163e2a6242, name=pro_new, id=74ebbe7a-4ab6-11e8-8f36-fa163e2a6242, type=role}, {subGuid=491a74fd-8312-11e7-9c1a-fa163e2a6242, name=开发, id=77488250-8312-11e7-9c1a-fa163e2a6242, type=role}, {subGuid=491a74fd-8312-11e7-9c1a-fa163e2a6242, name=新, id=d775a9b8-49b9-11e8-8f36-fa163e2a6242, type=role}, {subGuid=491a74fd-8312-11e7-9c1a-fa163e2a6242, name=学习, id=00640d30-3b20-11e9-a8a7-50465d555ba3, type=role}]

注意:这里树形结构的json默认只有两种分类roleGroup和role

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/356477.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号