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字符串有多层嵌套,还有不固定的元素。只要学会了方法,不管多少层也是能分析出来的。