java如何给有层级关系的JSON字符串做递归处理

Python011

java如何给有层级关系的JSON字符串做递归处理,第1张

递归出一个 node对象,再将node对象转换成json串。直接进行字符串的json操作不建议。

class Node{

private String id

private String parentId

private List<Node>children

public void addChildren(Node child){

getChildren().add(child)

}

public List<Node>getChildren()

public String transformTojson(Node node ,StringBuffer jsonStr){

//递归

if(jsonStr ==null){

StringBuffer jsonStr=new ()

}

if(node.id!=null){

//拼接父节点json串

jsonStr.append(id:node.id,children:#&children)

}

List childNodeList = node.getChildren()

StringBuffer childrenSB = new()

for( Node node :childNodeList){

childrenSB=transformTojson(node)

}

sonStr.replaceFirst("#&children",childrenSB)

return jsonStr

}

}

伪代码大概这样。

transformTojson方法可以不自己写,直接使用第三方工具jar包的json转化方法,比如gjson。

这个问题有点没意义,因为java已经有相应的jar了,不论是阿里的fastjson,还是gson,又或者是jackson,都是已经很成熟的jar了。如果非要自己去写的话,就需要用到反射了。简单来说,就是获取对象的所有属性。复杂说的话,要判断对象的属性,判断属性类型,判断属性值是否为null,判断对象是否是有transient修饰,判断字符串里面是否有双引号等等。然后通过StringBuffer或是StringBuilder去拼接字符串,来生成json串,至于是StringBuffer还是StringBuilder就看你的需要再决定了

使用递归函数。java中json不确定多少层需要使用递归函数,要获取的值就需要一个路径来表示,路径可以用数组来标记,这个Json字符串有多层嵌套,还有不固定的元素。只要学会了方法,不管多少层也是能分析出来的。