我有一个json字符串,它是网络(节点,边缘)的json表示。
以下是示例。
{
“孩子们”:[
{
“得分”:“1”,
“孩子们”:[
{
“得分”:“3”,
“id”:3,
“label”:“WORD”
},
{
“得分”:“3”,
“label”:“WORD”
}
],
“id”:2,
“label”:“WORD”
},
{
“得分”:“1”,
“孩子们”:[
{
“得分”:“3”,
“id”:9,
“label”:“WORD”
},
{
“得分”:“3”,
“id”:12,
“label”:“WORD”
}
],
“id”:8,
“label”:“WORD”
}
],
“id”:1,
“label”:“WORD”
}
每个“孩子”都是一个节点,其他每个属性都是 节点实例。
如何将其转换为java对象?
基本上它应该是Node实例的列表。
为此,我可能需要一个类似
的节点的java类Class Node
{
private int score;
private int id;
private String label;
private List<Integer> childrenIdList;
public Node()
{}
// setter and getter
}
然后我需要使用JSon simple或者将json字符串转换为java对象 GSON。
有人可以帮我吗?
答案 0 :(得分:0)
我是用GSon做的。
1)在网站的帮助下创建一个节点对象
http://www.jsonschema2pojo.org/
2)节点类(命名为子节点)
package example;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Generated;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
@Generated("org.jsonschema2pojo")
public class Children {
@SerializedName("score")
@Expose
private String score;
@SerializedName("children")
@Expose
private List<Children> children = new ArrayList<Children>();
@SerializedName("id")
@Expose
private Integer id;
@SerializedName("label")
@Expose
private String label;
/**
*
* @return
* The score
*/
public String getScore() {
return score;
}
/**
*
* @param score
* The score
*/
public void setScore(String score) {
this.score = score;
}
/**
*
* @return
* The children
*/
public List<Children> getChildren() {
return children;
}
/**
*
* @param children
* The children
*/
public void setChildren(List<Children> children) {
this.children = children;
}
/**
*
* @return
* The id
*/
public Integer getId() {
return id;
}
/**
*
* @param id
* The id
*/
public void setId(Integer id) {
this.id = id;
}
/**
*
* @return
* The label
*/
public String getLabel() {
return label;
}
/**
*
* @param label
* The label
*/
public void setLabel(String label) {
this.label = label;
}
}
3)递归迭代
public void parse(String json) throws JsonProcessingException, IOException, ParseException
{
Gson gson = new Gson();
Children object = gson.fromJson(json, Children.class);
Iterator<Children> iter=object.getChildren().iterator();
while(iter.hasNext())
{
Children c=(Children)iter.next();
if ( c.getChildren().size() > 0 )
{
System.out.println("current node(1):"+c.getLabel());
viewChildren(c);
}
else
{
System.out.println("top:"+c.getLabel());
}
}
}
public void viewChildren(Children _c)
{
Iterator<Children> iter=_c.getChildren().iterator();
while(iter.hasNext())
{
Children c=(Children)iter.next();
if ( c.getChildren().size() > 0 )
{
System.out.println("current node(2):"+c.getLabel());
viewChildren(c);
}
else
{
System.out.println("inner:"+c.getLabel());
}
}
}