如何在java中创建分层Json

时间:2014-01-14 17:25:16

标签: java json

我需要创建一个类似于树节点的json结构,其中一些根节点将存在,并且它们有一些子节点。我的json结构就像我发布的那样..

{
chart: {
    caption: "Subscriber Summary Percentage",
    xAxisName: "Month",
    yAxisName: "% Subscriber",
    showvalues: "0",
    palette: "1"
},
categories: [
    {
        category: [
            {
                label: "JAN"
            },
            {
                label: "FEB"
            },
            {
                label: "MAR"
            },
            {
                label: "APR"
            },
            {
                label: "MAY"
            },
            {
                label: "JUN"
            },
            {
                label: "JUL"
            },
            {
                label: "AUG"
            },
            {
                label: "SEP"
            }
        ]
    }
],
dataset: [
    {
        seriesname: "New Added",
        data: [
            {
                value: "1.1887604"
            },
            {
                value: "2.1255539"
            },
            {
                value: "2.3852911"
            },
            {
                value: "2.9953901000000003"
            },
            {
                value: "2.5770609"
            },
            {
                value: "2.8420104000000004"
            },
            {
                value: "4.543343"
            },
            {
                value: "3.7596994"
            },
            {
                value: "5.0751309000000004"
            }
        ]
    },
    {
        seriesname: "Churned",
        data: [
            {
                value: "2.4009264"
            },
            {
                value: "2.4021593"
            },
            {
                value: "2.8101032000000004"
            },
            {
                value: "3.1267909000000005"
            },
            {
                value: "3.790831"
            },
            {
                value: "3.9487281"
            },
            {
                value: "4.533631"
            },
            {
                value: "5.0275186"
            },
            {
                value: "5.4198564"
            }
        ]
    }
]
}

这是我的json结构,任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

您应该使用API​​来管理您的JSON,有几种可用于Java的可靠且快速的。选择https://stackoverflow.com/questions/338586/a-better-java-json-library中提到的一个,然后它会为你做繁重的工作。如果你自己操纵文本,它很容易犯错误。

以下示例使用Jackson库(从http://jackson.codehaus.org/下载库),但类似的概念适用于大多数其他JSON库。

您的JSON非常简单。为每个唯一类型创建一个Java POJO(任何不是intString之类的原始类型),然后使用@JsonProperty@XmlRootElement(name="")或API使用的任何内容对其进行注释

public class Chart{

  @JsonProperty
  public String caption;
  @JsonProperty
  public String xAxisName;
  @JsonProperty
  public String yAxisName;
  @JsonProperty
  public boolean showValues;
  @JsonProperty
  public int palette;
}

public class Categories{
   @JsonProperty
   public String[] category;//or whatever data type you're using, a tuple or something, category class array if you like
}

然后最终

public class CategoryJSON{
@JsonProperty
public Chart chart;
@JsonProperty
public Categories category;

}

然后你的API应该知道如何自动序列化和反序列化该格式的JSON,只需传递类类型。这是杰克逊:

ObjectMapper mapper = new ObjectMapper();  
CategoryJSON c = mapper.readValue(jsonInput, CategoryJSON.class);  //read
System.out.println(mapper.writeValueAsString(c)); //write