初めに、ObjectMapperはジャクソンのターンを使用するように、各JSONオブジェクトをモデル化するために、そのネストされたJSON 4階ならば、あなたは4つのJavaクラスを記述する必要があり、また、異なるタイプのオブジェクトを置くことができ、リスト、いつかの変更を要求する場合は、内部クラスの束から宝(鉱山)を掘るする必要があります。
その後、JDKは、このような文言がある参照してください。
JsonObject value = Json.createObjectBuilder()
.add("firstName", "John")
.add("lastName", "Smith")
.add("age", 25)
.add("address", Json.createObjectBuilder()
.add("streetAddress", "21 2nd Street")
.add("city", "New York")
.add("state", "NY")
.add("postalCode", "10021"))
.add("phoneNumber", Json.createArrayBuilder()
.add(Json.createObjectBuilder()
.add("type", "home")
.add("number", "212 555-1234"))
.add(Json.createObjectBuilder()
.add("type", "fax")
.add("number", "646 555-4567")))
.build();
これは、1つはかなり良い書き込み、JSONの構造全体を見ることができ、とてもクールに見えました。しかし、そのようなアプローチは、JSON-libが使用するために、JSON-libには、中またはJava 1.7、上記の使用は推奨されません。この理由。
だから、fastjsonに基づいて、彼はシンタックスシュガーとして、そのようなビルダーを書きました。
public class JsonObjectBuilder {
private JSONObject obj = new JSONObject();
public JsonObjectBuilder add(String key, Object value) {
obj.put(key, value);
return this;
}
public JSONObject build() {
return obj;
}
}
public class JsonArrayBuilder {
private JSONArray array = new JSONArray();
public JsonArrayBuilder add(Object item) {
array.add(item);
return this;
}
public JSONArray build() {
return array;
}
}
public class JsonBuilder {
public static JsonObjectBuilder newObject() {
return new JsonObjectBuilder();
}
public static JsonArrayBuilder newArray() {
return new JsonArrayBuilder();
}
}
デモンストレーションを使用します。
JSONObject obj = JsonBuilder.newObject()
.add("name", "Andy")
.add("age", 28)
.add("friends", JsonBuilder.newArray()
.add(JsonBuilder.newObject()
.add("name", "Maggie")
.add("hobby", "hike")
.build())
.add(JsonBuilder.newObject()
.add("name", "Tonny")
.add("city", "hongkong")
.build())
.build())
.build();
行うには、それを行うことですが、私は最終的にしたい、私が最も欲しい何かがJavaScriptの効果と同様であるではありません。
{
"name": ${name},
"friends": [
{
"name": ${friend}
}
]
}
現在のJavaは、まだ改善のJava構文を期待して、出てきません。