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);
}
}
使用jackson将JSON字符串转成List集合
最新推荐文章于 2022-06-07 15:51:35 发布