2014-01-14 51 views
0

我有一個要求,使一個JSON結構像一個樹節點,其中一些根節點將在那裏,他們有一些孩子。我的json結構是這樣的我張貼..如何在java中製作分層結構的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

你在使用JSON庫嗎? –

回答

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 
+0

供參考,這是使用[傑克遜](https://github.com/FasterXML/jackson)JSON庫 - 有幾個其他庫可以用來代替。 –

+0

@IanRoberts編輯得更清楚,這是傑克遜,你需要使用適當的註釋。 – SpacePrez

+0

@AlexeiLevenkov將高度依賴於正在使用的JSON框架,問問題的人沒有指定。你不應該滾動你自己的JSON解決方案。 – SpacePrez