关于解析器:自己动手写json解析器0x04生成对象
介绍通过分词和形象语法树生成后,咱们就能够依据语法树生成java对象,为了让程序尽量简略,object用Map返回,array用List<Map>返回,根本类型间接返回value 实现语法树到对象的生成绝对还是比较简单,首先咱们定义了一个总的入口函数 /** * 将json生成java对象 * * @param item * @return */public Object generate(Ast item) { if ("array".equals(item.getType())) { //返回数组对象 return generateList(item); } else if ("object".equals(item.getType())) { //返回object对象 return generateObject(item); } else if ("value".equals(item.getType())) { //根本类型json对象,比方"100"也是一个json对象 return item.getValue(); } return null;}对应三种类型的解决形式 generateObject /** * 生成object对象 * * @param astItem * @return */public Map generateObject(Ast astItem) { //object对象以Map模式返回 Map<String, Object> object = new HashMap<>(); for (Ast ast : astItem.getItems()) { Object value = null; if ("object".equals(ast.getType()) || "array".equals(ast.getType())) { value = generate(ast); } else if ("value".equals(ast.getType())) { value = ast.getValue(); } object.put(ast.getName(), value); } return object;}遍历object的字段如果是object或者array,那么通过入口函数进行递归如果是value间接取value值就行generateList ...