解析代表网络的json(图)

时间:2015-11-15 00:22:43

标签: json graph

我有一个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。

有人可以帮我吗?

1 个答案:

答案 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());
            }
        }
    }