Json解析之细节
,ONE Goal,ONE Passion!
--czfy
换新工作将近有半个月了,也终于适应了新的工作环境和工作模式.现在也有更多的时间来整理自己想要学习的东西了.
数组型的json数据,对于新学习编程的同学来说感觉不知道如何去解析,甚至连bean类都不知道该如何去写.我在以为同学那里拿到了一个数据源,下面接把解析过程中出现的问题写下来.
一: 开始解析
try {
//首先: 将数据源转化为JSONArray对象
JSONArray array = new JSONArray(JsonString.jsonArray);
for (int i = 0; i < array.length(); i++) { //遍历数组中的json
JSONObject obj = array.optJSONObject(i);//得到的obj
Gson gson = new Gson(); //使用gson去解析.
bean bean = gson.fromJson(obj + "", bean.class); //bean为json数据对应的一个bean类
//我们想拿到里层ChildrenBean的数据,可是这个数据源有事不对称的:在第3个{...}中是没有ChildrenBean的.所以我们要先判断一下,解析出来的每个子bean是否有ChildrenBean.下图可以看到数据结构效果:
List<com.example.bean.bean.ChildrenBean> children = bean.getChildren();
// 此时一定注意不要用 children.isEmpty()判断是否有children
if (null != children) {
for (int j = 0; j < children.size(); j++) {
//这样就能得到最里层的name了
String name = children.get(j).getName();
}
}
}
} catch (JSONException e) {
e.printStackTrace();
}
备注: 为什么不用children.isEmpty()判断是否有children
/**
* Returns whether this {@code List} contains no elements.
*
* @return {@code true} if this {@code List} has no elements, {@code false}
* otherwise.
* @see #size
*/
public boolean isEmpty();//这个方法时判断集合中是否有元素
如果这样使用:
List<com.example.bean.bean.ChildrenBean> children = bean.getChildren();
children.isEmpty();
// 当bean中没有children时,就变成了null.isEmpty();所以在这里不能用 children.isEmpty();而要用: null != children; 做判断
二 .另附数据源以及bean类
有些人对bean类的写法不是很清晰,认为凡是数据源的字段,bean类中必须全有,而且,没有的bean类中也不能有,其实不是这样的.bean类中字段可以比数据源多或者少.到那时如果你用到某个字段的话,bean类中一定要有,而且不能写错.对于你不想用的字段可以不写如bean类中.如果bean类中多写了一个字段,也没问题,无非是你不用资字段就行了.
bean类
/**
* BaselineEndDate : 2010-02-01
* BaselineStartDate : 2010-01-13
* EndDate : 2010-02-02
* Id : 1
* Name : 计划
* PercentDone : 40
* Priority : 1
* Responsible :
* StartDate : 2010-01-18
* children : [{"BaselineEndDate":"2010-01-28","BaselineStartDate":"2010-01-20","EndDate":"2010-01-28","Id":11,"Name":"调研","ParentId":1,"PercentDone":30,"Priority":1,"Responsible":"","StartDate":"2010-01-18","leaf":true},{"BaselineEndDate":"2010-02-01","BaselineStartDate":"2010-01-25","EndDate":"2010-02-02","Id":12,"Name":"分配资源","PercentDone":0,"Priority":0,"Responsible":"","StartDate":"2010-01-28","leaf":true},{"BaselineEndDate":"2010-02-01","BaselineStartDate":"2010-01-25","EndDate":"2010-02-02","Id":13,"Name":"收集文档","PercentDone":40,"Priority":1,"Responsible":"","StartDate":"2010-01-25","leaf":true},{"BaselineEndDate":"2010-02-04","BaselineStartDate":"2010-02-04","EndDate":"2010-02-02","Id":17,"Name":"汇报给领导","PercentDone":0,"Priority":0,"Responsible":"","StartDate":"2010-02-02","leaf":true}]
* expanded : true
*/
private String BaselineEndDate;
private String BaselineStartDate;
private String EndDate;
private int Id;
private String Name;
private int PercentDone;
private int Priority;
private String Responsible;
private String StartDate;
private boolean expanded;
/**
* BaselineEndDate : 2010-01-28
* BaselineStartDate : 2010-01-20
* EndDate : 2010-01-28
* Id : 11
* Name : 调研
* ParentId : 1
* PercentDone : 30
* Priority : 1
* Responsible :
* StartDate : 2010-01-18
* leaf : true
*/
private List<ChildrenBean> children;
public String getBaselineEndDate() {
return BaselineEndDate;
}
public void setBaselineEndDate(String BaselineEndDate) {
this.BaselineEndDate = BaselineEndDate;
}
public String getBaselineStartDate() {
return BaselineStartDate;
}
public void setBaselineStartDate(String BaselineStartDate) {
this.BaselineStartDate = BaselineStartDate;
}
public String getEndDate() {
return EndDate;
}
public void setEndDate(String EndDate) {
this.EndDate = EndDate;
}
public int getId() {
return Id;
}
public void setId(int Id) {
this.Id = Id;
}
public String getName() {
return Name;
}
public void setName(String Name) {
this.Name = Name;
}
public int getPercentDone() {
return PercentDone;
}
public void setPercentDone(int PercentDone) {
this.PercentDone = PercentDone;
}
public int getPriority() {
return Priority;
}
public void setPriority(int Priority) {
this.Priority = Priority;
}
public String getResponsible() {
return Responsible;
}
public void setResponsible(String Responsible) {
this.Responsible = Responsible;
}
public String getStartDate() {
return StartDate;
}
public void setStartDate(String StartDate) {
this.StartDate = StartDate;
}
public boolean isExpanded() {
return expanded;
}
public void setExpanded(boolean expanded) {
this.expanded = expanded;
}
public List<ChildrenBean> getChildren() {
return children;
}
public void setChildren(List<ChildrenBean> children) {
this.children = children;
}
public static class ChildrenBean {
private String BaselineEndDate;
private String BaselineStartDate;
private String EndDate;
private int Id;
private String Name;
private int ParentId;
private int PercentDone;
private int Priority;
private String Responsible;
private String StartDate;
private boolean leaf;
public String getBaselineEndDate() {
return BaselineEndDate;
}
public void setBaselineEndDate(String BaselineEndDate) {
this.BaselineEndDate = BaselineEndDate;
}
public String getBaselineStartDate() {
return BaselineStartDate;
}
public void setBaselineStartDate(String BaselineStartDate) {
this.BaselineStartDate = BaselineStartDate;
}
public String getEndDate() {
return EndDate;
}
public void setEndDate(String EndDate) {
this.EndDate = EndDate;
}
public int getId() {
return Id;
}
public void setId(int Id) {
this.Id = Id;
}
public String getName() {
return Name;
}
public void setName(String Name) {
this.Name = Name;
}
public int getParentId() {
return ParentId;
}
public void setParentId(int ParentId) {
this.ParentId = ParentId;
}
public int getPercentDone() {
return PercentDone;
}
public void setPercentDone(int PercentDone) {
this.PercentDone = PercentDone;
}
public int getPriority() {
return Priority;
}
public void setPriority(int Priority) {
this.Priority = Priority;
}
public String getResponsible() {
return Responsible;
}
public void setResponsible(String Responsible) {
this.Responsible = Responsible;
}
public String getStartDate() {
return StartDate;
}
public void setStartDate(String StartDate) {
this.StartDate = StartDate;
}
public boolean isLeaf() {
return leaf;
}
public void setLeaf(boolean leaf) {
this.leaf = leaf;
}
}
原始数据源
[
{
"BaselineEndDate": "2010-02-01",
"BaselineStartDate": "2010-01-13",
"EndDate": "2010-02-02",
"Id": 1,
"Name": "计划",
"PercentDone": 40,
"Priority": 1,
"Responsible": "",
"StartDate": "2010-01-18",
"children": [
{
"BaselineEndDate": "2010-01-28",
"BaselineStartDate": "2010-01-20",
"EndDate": "2010-01-28",
"Id": 11,
"Name": "调研",
"ParentId": 1,
"PercentDone": 30,
"Priority": 1,
"Responsible": "",
"StartDate": "2010-01-18",
"leaf": true
},
{
"BaselineEndDate": "2010-02-01",
"BaselineStartDate": "2010-01-25",
"EndDate": "2010-02-02",
"Id": 12,
"Name": "分配资源",
"PercentDone": 0,
"Priority": 0,
"Responsible": "",
"StartDate": "2010-01-28",
"leaf": true
},
{
"BaselineEndDate": "2010-02-01",
"BaselineStartDate": "2010-01-25",
"EndDate": "2010-02-02",
"Id": 13,
"Name": "收集文档",
"PercentDone": 40,
"Priority": 1,
"Responsible": "",
"StartDate": "2010-01-25",
"leaf": true
},
{
"BaselineEndDate": "2010-02-04",
"BaselineStartDate": "2010-02-04",
"EndDate": "2010-02-02",
"Id": 17,
"Name": "汇报给领导",
"PercentDone": 0,
"Priority": 0,
"Responsible": "",
"StartDate": "2010-02-02",
"leaf": true
}
],
"expanded": true
},
{
"BaselineEndDate": "2010-03-15",
"BaselineStartDate": "2010-01-23",
"EndDate": "2010-03-20",
"Id": 4,
"Name": "实施阶段1",
"PercentDone": 50,
"Priority": 1,
"Responsible": "",
"StartDate": "2010-01-25",
"children": [
{
"BaselineEndDate": "2010-01-25",
"BaselineStartDate": "2010-01-20",
"EndDate": "2010-01-30",
"Id": 34,
"Name": "准备工作",
"PercentDone": 0,
"Priority": 0,
"Responsible": "",
"StartDate": "2010-01-25",
"leaf": true
},
{
"BaselineEndDate": "2010-03-07",
"BaselineStartDate": "2010-02-25",
"EndDate": "2010-03-07",
"Id": 14,
"Name": "芯片评估",
"PercentDone": 30,
"Priority": 0,
"Responsible": "",
"StartDate": "2010-02-25",
"leaf": true
},
{
"BaselineEndDate": "2010-03-20",
"BaselineStartDate": "2010-03-10",
"EndDate": "2010-03-20",
"Id": 16,
"Name": "选择技术方案",
"ParentId": 4,
"PercentDone": 30,
"Priority": 0,
"Responsible": "",
"StartDate": "2010-03-10",
"leaf": true
},
{
"BaselineEndDate": "2010-03-06",
"BaselineStartDate": "2010-01-28",
"EndDate": "2010-03-08",
"Id": 15,
"Name": "设计原型",
"PercentDone": 40,
"Priority": 0,
"Responsible": "",
"StartDate": "2010-01-30",
"children": [
{
"BaselineEndDate": "2010-02-06",
"BaselineStartDate": "2010-01-27",
"EndDate": "2010-02-09",
"Id": 20,
"Name": "步骤 1",
"PercentDone": 30,
"Priority": 1,
"Responsible": "",
"StartDate": "2010-01-30",
"leaf": true
},
{
"BaselineEndDate": "2010-02-22",
"BaselineStartDate": "2010-02-17",
"EndDate": "2010-02-22",
"Id": 19,
"Name": "步骤 2",
"PercentDone": 40,
"Priority": 1,
"Responsible": "",
"StartDate": "2010-02-17",
"leaf": true
},
{
"BaselineEndDate": "2010-03-07",
"BaselineStartDate": "2010-02-25",
"EndDate": "2010-03-07",
"Id": 18,
"Name": "步骤 3",
"PercentDone": 100,
"Priority": 1,
"Responsible": "",
"StartDate": "2010-02-25",
"leaf": true
},
{
"BaselineEndDate": "2010-03-08",
"BaselineStartDate": "2010-03-04",
"EndDate": "2010-03-08",
"Id": 21,
"Name": "和用户沟通",
"PercentDone": 60,
"Priority": 0,
"Responsible": "",
"StartDate": "2010-03-04",
"leaf": true
}
],
"expanded": true
}
],
"expanded": true
},
{
"BaselineEndDate": "2010-03-08",
"BaselineStartDate": "2010-03-08",
"EndDate": "2010-03-08",
"Id": 5,
"Name": "用户签字确认",
"PercentDone": 0,
"Priority": 2,
"Responsible": "",
"StartDate": "2010-03-08",
"leaf": true
},
{
"BaselineEndDate": "2010-03-18",
"BaselineStartDate": "2010-03-08",
"EndDate": "2010-03-18",
"Id": 6,
"Name": "实施阶段 2",
"PercentDone": 50,
"Priority": 1,
"Responsible": "",
"StartDate": "2010-03-08",
"children": [
{
"BaselineEndDate": "2010-03-18",
"BaselineStartDate": "2010-03-08",
"EndDate": "2010-03-18",
"Id": 25,
"Name": "任务 3",
"PercentDone": 10,
"Priority": 0,
"Responsible": "",
"StartDate": "2010-03-08",
"leaf": true
},
{
"BaselineEndDate": "2010-03-18",
"BaselineStartDate": "2010-03-08",
"EndDate": "2010-03-18",
"Id": 26,
"Name": "任务 2",
"ParentId": 6,
"PercentDone": 20,
"Priority": 0,
"Responsible": "",
"StartDate": "2010-03-08",
"leaf": true
},
{
"BaselineEndDate": "2010-03-18",
"BaselineStartDate": "2010-03-08",
"EndDate": "2010-03-18",
"Id": 27,
"Name": "任务 1",
"ParentId": 6,
"PercentDone": 20,
"Priority": 0,
"Responsible": "",
"StartDate": "2010-03-08",
"leaf": true
}
],
"expanded": true
},
{
"BaselineEndDate": "2010-03-17",
"BaselineStartDate": "2010-03-17",
"EndDate": "2010-03-17",
"Id": 10,
"Name": "客户签字 2",
"PercentDone": 0,
"Priority": 1,
"Responsible": "",
"StartDate": "2010-03-17",
"leaf": true
},
{
"BaselineEndDate": "2010-05-08",
"BaselineStartDate": "2010-03-22",
"EndDate": "2010-05-08",
"Id": 8,
"Name": "生产阶段 1",
"PercentDone": 40,
"Priority": 2,
"Responsible": "",
"StartDate": "2010-03-22",
"children": [
{
"BaselineEndDate": "2010-04-07",
"BaselineStartDate": "2010-03-22",
"EndDate": "2010-04-07",
"Id": 22,
"Name": "装配",
"PercentDone": 50,
"Priority": 1,
"Responsible": "",
"StartDate": "2010-03-22",
"leaf": true
},
{
"BaselineEndDate": "2010-04-21",
"BaselineStartDate": "2010-04-06",
"EndDate": "2010-04-21",
"Id": 23,
"Name": "加载",
"PercentDone": 20,
"Priority": 2,
"Responsible": "",
"StartDate": "2010-04-06",
"leaf": true
},
{
"BaselineEndDate": "2010-05-04",
"BaselineStartDate": "2010-04-14",
"EndDate": "2010-05-08",
"Id": 24,
"Name": "基本测试",
"PercentDone": 50,
"Priority": 2,
"Responsible": "",
"StartDate": "2010-04-22",
"leaf": true
}
],
"expanded": true
},
{
"BaselineEndDate": "2010-05-11",
"BaselineStartDate": "2010-05-02",
"EndDate": "2010-05-15",
"Id": 9,
"Name": "验收测试",
"PercentDone": 0,
"Priority": 1,
"Responsible": "",
"StartDate": "2010-05-07",
"leaf": true
},
{
"BaselineEndDate": "2010-05-11",
"BaselineStartDate": "2010-05-11",
"EndDate": "2010-05-15",
"Id": 7,
"Name": "交付",
"PercentDone": 40,
"Priority": 1,
"Responsible": "",
"StartDate": "2010-05-15",
"leaf": true
}
]
放入代码中转义之后的数据源
String jsonArray = "[\n" +
" {\n" +
" \"BaselineEndDate\": \"2010-02-01\",\n" +
" \"BaselineStartDate\": \"2010-01-13\",\n" +
" \"EndDate\": \"2010-02-02\",\n" +
" \"Id\": 1,\n" +
" \"Name\": \"计划\",\n" +
" \"PercentDone\": 40,\n" +
" \"Priority\": 1,\n" +
" \"Responsible\": \"\",\n" +
" \"StartDate\": \"2010-01-18\",\n" +
" \"children\": [\n" +
" {\n" +
" \"BaselineEndDate\": \"2010-01-28\",\n" +
" \"BaselineStartDate\": \"2010-01-20\",\n" +
" \"EndDate\": \"2010-01-28\",\n" +
" \"Id\": 11,\n" +
" \"Name\": \"调研\",\n" +
" \"ParentId\": 1,\n" +
" \"PercentDone\": 30,\n" +
" \"Priority\": 1,\n" +
" \"Responsible\": \"\",\n" +
" \"StartDate\": \"2010-01-18\",\n" +
" \"leaf\": true\n" +
" },\n" +
" {\n" +
" \"BaselineEndDate\": \"2010-02-01\",\n" +
" \"BaselineStartDate\": \"2010-01-25\",\n" +
" \"EndDate\": \"2010-02-02\",\n" +
" \"Id\": 12,\n" +
" \"Name\": \"分配资源\",\n" +
" \"PercentDone\": 0,\n" +
" \"Priority\": 0,\n" +
" \"Responsible\": \"\",\n" +
" \"StartDate\": \"2010-01-28\",\n" +
" \"leaf\": true\n" +
" },\n" +
" {\n" +
" \"BaselineEndDate\": \"2010-02-01\",\n" +
" \"BaselineStartDate\": \"2010-01-25\",\n" +
" \"EndDate\": \"2010-02-02\",\n" +
" \"Id\": 13,\n" +
" \"Name\": \"收集文档\",\n" +
" \"PercentDone\": 40,\n" +
" \"Priority\": 1,\n" +
" \"Responsible\": \"\",\n" +
" \"StartDate\": \"2010-01-25\",\n" +
" \"leaf\": true\n" +
" },\n" +
" {\n" +
" \"BaselineEndDate\": \"2010-02-04\",\n" +
" \"BaselineStartDate\": \"2010-02-04\",\n" +
" \"EndDate\": \"2010-02-02\",\n" +
" \"Id\": 17,\n" +
" \"Name\": \"汇报给领导\",\n" +
" \"PercentDone\": 0,\n" +
" \"Priority\": 0,\n" +
" \"Responsible\": \"\",\n" +
" \"StartDate\": \"2010-02-02\",\n" +
" \"leaf\": true\n" +
" }\n" +
" ],\n" +
" \"expanded\": true\n" +
" },\n" +
" {\n" +
" \"BaselineEndDate\": \"2010-03-15\",\n" +
" \"BaselineStartDate\": \"2010-01-23\",\n" +
" \"EndDate\": \"2010-03-20\",\n" +
" \"Id\": 4,\n" +
" \"Name\": \"实施阶段1\",\n" +
" \"PercentDone\": 50,\n" +
" \"Priority\": 1,\n" +
" \"Responsible\": \"\",\n" +
" \"StartDate\": \"2010-01-25\",\n" +
" \"children\": [\n" +
" {\n" +
" \"BaselineEndDate\": \"2010-01-25\",\n" +
" \"BaselineStartDate\": \"2010-01-20\",\n" +
" \"EndDate\": \"2010-01-30\",\n" +
" \"Id\": 34,\n" +
" \"Name\": \"准备工作\",\n" +
" \"PercentDone\": 0,\n" +
" \"Priority\": 0,\n" +
" \"Responsible\": \"\",\n" +
" \"StartDate\": \"2010-01-25\",\n" +
" \"leaf\": true\n" +
" },\n" +
" {\n" +
" \"BaselineEndDate\": \"2010-03-07\",\n" +
" \"BaselineStartDate\": \"2010-02-25\",\n" +
" \"EndDate\": \"2010-03-07\",\n" +
" \"Id\": 14,\n" +
" \"Name\": \"芯片评估\",\n" +
" \"PercentDone\": 30,\n" +
" \"Priority\": 0,\n" +
" \"Responsible\": \"\",\n" +
" \"StartDate\": \"2010-02-25\",\n" +
" \"leaf\": true\n" +
" },\n" +
" {\n" +
" \"BaselineEndDate\": \"2010-03-20\",\n" +
" \"BaselineStartDate\": \"2010-03-10\",\n" +
" \"EndDate\": \"2010-03-20\",\n" +
" \"Id\": 16,\n" +
" \"Name\": \"选择技术方案\",\n" +
" \"ParentId\": 4,\n" +
" \"PercentDone\": 30,\n" +
" \"Priority\": 0,\n" +
" \"Responsible\": \"\",\n" +
" \"StartDate\": \"2010-03-10\",\n" +
" \"leaf\": true\n" +
" },\n" +
" {\n" +
" \"BaselineEndDate\": \"2010-03-06\",\n" +
" \"BaselineStartDate\": \"2010-01-28\",\n" +
" \"EndDate\": \"2010-03-08\",\n" +
" \"Id\": 15,\n" +
" \"Name\": \"设计原型\",\n" +
" \"PercentDone\": 40,\n" +
" \"Priority\": 0,\n" +
" \"Responsible\": \"\",\n" +
" \"StartDate\": \"2010-01-30\",\n" +
" \"children\": [\n" +
" {\n" +
" \"BaselineEndDate\": \"2010-02-06\",\n" +
" \"BaselineStartDate\": \"2010-01-27\",\n" +
" \"EndDate\": \"2010-02-09\",\n" +
" \"Id\": 20,\n" +
" \"Name\": \"步骤 1\",\n" +
" \"PercentDone\": 30,\n" +
" \"Priority\": 1,\n" +
" \"Responsible\": \"\",\n" +
" \"StartDate\": \"2010-01-30\",\n" +
" \"leaf\": true\n" +
" },\n" +
" {\n" +
" \"BaselineEndDate\": \"2010-02-22\",\n" +
" \"BaselineStartDate\": \"2010-02-17\",\n" +
" \"EndDate\": \"2010-02-22\",\n" +
" \"Id\": 19,\n" +
" \"Name\": \"步骤 2\",\n" +
" \"PercentDone\": 40,\n" +
" \"Priority\": 1,\n" +
" \"Responsible\": \"\",\n" +
" \"StartDate\": \"2010-02-17\",\n" +
" \"leaf\": true\n" +
" },\n" +
" {\n" +
" \"BaselineEndDate\": \"2010-03-07\",\n" +
" \"BaselineStartDate\": \"2010-02-25\",\n" +
" \"EndDate\": \"2010-03-07\",\n" +
" \"Id\": 18,\n" +
" \"Name\": \"步骤 3\",\n" +
" \"PercentDone\": 100,\n" +
" \"Priority\": 1,\n" +
" \"Responsible\": \"\",\n" +
" \"StartDate\": \"2010-02-25\",\n" +
" \"leaf\": true\n" +
" },\n" +
" {\n" +
" \"BaselineEndDate\": \"2010-03-08\",\n" +
" \"BaselineStartDate\": \"2010-03-04\",\n" +
" \"EndDate\": \"2010-03-08\",\n" +
" \"Id\": 21,\n" +
" \"Name\": \"和用户沟通\",\n" +
" \"PercentDone\": 60,\n" +
" \"Priority\": 0,\n" +
" \"Responsible\": \"\",\n" +
" \"StartDate\": \"2010-03-04\",\n" +
" \"leaf\": true\n" +
" }\n" +
" ],\n" +
" \"expanded\": true\n" +
" }\n" +
" ],\n" +
" \"expanded\": true\n" +
" },\n" +
" {\n" +
" \"BaselineEndDate\": \"2010-03-08\",\n" +
" \"BaselineStartDate\": \"2010-03-08\",\n" +
" \"EndDate\": \"2010-03-08\",\n" +
" \"Id\": 5,\n" +
" \"Name\": \"用户签字确认\",\n" +
" \"PercentDone\": 0,\n" +
" \"Priority\": 2,\n" +
" \"Responsible\": \"\",\n" +
" \"StartDate\": \"2010-03-08\",\n" +
" \"leaf\": true\n" +
" },\n" +
" {\n" +
" \"BaselineEndDate\": \"2010-03-18\",\n" +
" \"BaselineStartDate\": \"2010-03-08\",\n" +
" \"EndDate\": \"2010-03-18\",\n" +
" \"Id\": 6,\n" +
" \"Name\": \"实施阶段 2\",\n" +
" \"PercentDone\": 50,\n" +
" \"Priority\": 1,\n" +
" \"Responsible\": \"\",\n" +
" \"StartDate\": \"2010-03-08\",\n" +
" \"children\": [\n" +
" {\n" +
" \"BaselineEndDate\": \"2010-03-18\",\n" +
" \"BaselineStartDate\": \"2010-03-08\",\n" +
" \"EndDate\": \"2010-03-18\",\n" +
" \"Id\": 25,\n" +
" \"Name\": \"任务 3\",\n" +
" \"PercentDone\": 10,\n" +
" \"Priority\": 0,\n" +
" \"Responsible\": \"\",\n" +
" \"StartDate\": \"2010-03-08\",\n" +
" \"leaf\": true\n" +
" },\n" +
" {\n" +
" \"BaselineEndDate\": \"2010-03-18\",\n" +
" \"BaselineStartDate\": \"2010-03-08\",\n" +
" \"EndDate\": \"2010-03-18\",\n" +
" \"Id\": 26,\n" +
" \"Name\": \"任务 2\",\n" +
" \"ParentId\": 6,\n" +
" \"PercentDone\": 20,\n" +
" \"Priority\": 0,\n" +
" \"Responsible\": \"\",\n" +
" \"StartDate\": \"2010-03-08\",\n" +
" \"leaf\": true\n" +
" },\n" +
" {\n" +
" \"BaselineEndDate\": \"2010-03-18\",\n" +
" \"BaselineStartDate\": \"2010-03-08\",\n" +
" \"EndDate\": \"2010-03-18\",\n" +
" \"Id\": 27,\n" +
" \"Name\": \"任务 1\",\n" +
" \"ParentId\": 6,\n" +
" \"PercentDone\": 20,\n" +
" \"Priority\": 0,\n" +
" \"Responsible\": \"\",\n" +
" \"StartDate\": \"2010-03-08\",\n" +
" \"leaf\": true\n" +
" }\n" +
" ],\n" +
" \"expanded\": true\n" +
" },\n" +
" {\n" +
" \"BaselineEndDate\": \"2010-03-17\",\n" +
" \"BaselineStartDate\": \"2010-03-17\",\n" +
" \"EndDate\": \"2010-03-17\",\n" +
" \"Id\": 10,\n" +
" \"Name\": \"客户签字 2\",\n" +
" \"PercentDone\": 0,\n" +
" \"Priority\": 1,\n" +
" \"Responsible\": \"\",\n" +
" \"StartDate\": \"2010-03-17\",\n" +
" \"leaf\": true\n" +
" },\n" +
" {\n" +
" \"BaselineEndDate\": \"2010-05-08\",\n" +
" \"BaselineStartDate\": \"2010-03-22\",\n" +
" \"EndDate\": \"2010-05-08\",\n" +
" \"Id\": 8,\n" +
" \"Name\": \"生产阶段 1\",\n" +
" \"PercentDone\": 40,\n" +
" \"Priority\": 2,\n" +
" \"Responsible\": \"\",\n" +
" \"StartDate\": \"2010-03-22\",\n" +
" \"children\": [\n" +
" {\n" +
" \"BaselineEndDate\": \"2010-04-07\",\n" +
" \"BaselineStartDate\": \"2010-03-22\",\n" +
" \"EndDate\": \"2010-04-07\",\n" +
" \"Id\": 22,\n" +
" \"Name\": \"装配\",\n" +
" \"PercentDone\": 50,\n" +
" \"Priority\": 1,\n" +
" \"Responsible\": \"\",\n" +
" \"StartDate\": \"2010-03-22\",\n" +
" \"leaf\": true\n" +
" },\n" +
" {\n" +
" \"BaselineEndDate\": \"2010-04-21\",\n" +
" \"BaselineStartDate\": \"2010-04-06\",\n" +
" \"EndDate\": \"2010-04-21\",\n" +
" \"Id\": 23,\n" +
" \"Name\": \"加载\",\n" +
" \"PercentDone\": 20,\n" +
" \"Priority\": 2,\n" +
" \"Responsible\": \"\",\n" +
" \"StartDate\": \"2010-04-06\",\n" +
" \"leaf\": true\n" +
" },\n" +
" {\n" +
" \"BaselineEndDate\": \"2010-05-04\",\n" +
" \"BaselineStartDate\": \"2010-04-14\",\n" +
" \"EndDate\": \"2010-05-08\",\n" +
" \"Id\": 24,\n" +
" \"Name\": \"基本测试\",\n" +
" \"PercentDone\": 50,\n" +
" \"Priority\": 2,\n" +
" \"Responsible\": \"\",\n" +
" \"StartDate\": \"2010-04-22\",\n" +
" \"leaf\": true\n" +
" }\n" +
" ],\n" +
" \"expanded\": true\n" +
" },\n" +
" {\n" +
" \"BaselineEndDate\": \"2010-05-11\",\n" +
" \"BaselineStartDate\": \"2010-05-02\",\n" +
" \"EndDate\": \"2010-05-15\",\n" +
" \"Id\": 9,\n" +
" \"Name\": \"验收测试\",\n" +
" \"PercentDone\": 0,\n" +
" \"Priority\": 1,\n" +
" \"Responsible\": \"\",\n" +
" \"StartDate\": \"2010-05-07\",\n" +
" \"leaf\": true\n" +
" },\n" +
" {\n" +
" \"BaselineEndDate\": \"2010-05-11\",\n" +
" \"BaselineStartDate\": \"2010-05-11\",\n" +
" \"EndDate\": \"2010-05-15\",\n" +
" \"Id\": 7,\n" +
" \"Name\": \"交付\",\n" +
" \"PercentDone\": 40,\n" +
" \"Priority\": 1,\n" +
" \"Responsible\": \"\",\n" +
" \"StartDate\": \"2010-05-15\",\n" +
" \"leaf\": true\n" +
" }\n" +
"]";
ok! 查看gson解析,生成更多详情请移步: http://blog.csdn.net/fengltxx/article/details/49902659