【发布时间】:2016-04-22 19:33:06
【问题描述】:
我正在使用 gson 从 json 字符串构建 Java 对象。 json 结构构建了一个“查询”,其中可以包含
a) 规则,由条件(AND 或 OR)组合
b) 一个或多个查询,由一个条件(AND 或 OR)组合
(a) 很简单,但是a 怎么实现(b)?
这里是一个 json 示例:
{
"condition": "AND",
"rules": [
{
"id": "amount",
"field": "amount",
"type": "double",
"input": "text",
"operator": "greater",
"value": "80"
},
{
"condition": "OR",
"rules": [
{
"id": "text",
"field": "text",
"type": "string",
"input": "text",
"operator": "contains",
"value": "rewe"
},
{
"id": "text",
"field": "text",
"type": "string",
"input": "text",
"operator": "contains",
"value": "aldi"
}
]
}
]
}
这是我的java类,代表json:
public class QueryBuilder {
public String condition;
private List<Rule> rules;
private List<QueryBuilder> children; // <-- should I do it like this?
public static QueryBuilder buildFromJson(String json) {
// Gson g = new Gson();
Gson g = new GsonBuilder()
//.registerTypeAdapter(Rule.class, new JsonCustomSerializer ())
.create();
return g.fromJson(json, QueryBuilder.class);
}
public String toJson() {
Gson g = new Gson();
return g.toJson(this);
}
public String getCondition() {
return condition;
}
public void setCondition(String condition) {
this.condition = condition;
}
public List<Rule> getRules() {
return rules;
}
public void setRules(List<Rule> rules) {
this.rules = rules;
}
public List<QueryBuilder> getChildren() {
return children;
}
public void setChildren(List<QueryBuilder> children) {
this.children = children;
}
}
【问题讨论】: