使用jackson将JSON字符串转成List集合
public class MenuUtil { public static ListsMenuRequest changeMenuStringToListsMenuRequest(String menuString) { ListsMenuRequest listsMenuRequest = new ListsMenuRequest(); try { ObjectMapper om = new ObjectMapper(); JsonNode rootNode = om.readTree(menuString); listsMenuRequest.setMenuRequests(parserArray(rootNode)); return listsMenuRequest; } catch (JsonParseException e) { throw new RuntimeException("解析json错误," + menuString, e); } catch (IOException e) { //it never happen return null; } } private static List<MenuRequest> parserArray(JsonNode jsonNode) { if (!jsonNode.isArray()) { throw new RuntimeException("json对象不是数组类型"); } List<MenuRequest> result = new ArrayList<MenuRequest>(); for (JsonNode node : jsonNode) { result.add(parserSingle(node)); } return result; } private static MenuRequest parserSingle(JsonNode node) { String name = node.get("name").asText(); if (!node.has("type")) { GroupMenuRequest result = new GroupMenuRequest(); result.setName(name); List leafMenuRequest = parserArray(node.get("children")); result.setChildrens(((List<LeafMenuRequest>) leafMenuRequest)); return result; } String type = node.get("type").asText(); String value = node.get("value").asText(); if (type.equals("VIEW")) { ViewMenuRequest result = new ViewMenuRequest(); result.setName(name); result.setUrl(value); return result; } if (type.equals("CLICK")) { ClickMenuRequest result = new ClickMenuRequest(); result.setName(name); result.setKey(value); return result; } throw new RuntimeException("不能识别的类型: " + type); } }
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: 一起写RPC框架(二)RPC之项目搭建
- 下一篇: groovy list转化为数组