2.8. JSON 処理での JSON API の使用 (JSON-P)
JSON 処理 (JSON-P) の JSON API は、JSR 353 で定義されている Java EE 7 仕様で導入されました。追加の仕様は、Java EE 8 の JSR 374 で定義されています。JSON Processing の Jakarta EE と同等のものは、Jakarta JSON Processing 1.1 仕様 に含まれています。
JSON-P は JSON を処理する API を定義します。JBoss EAP は、リクエストまたは応答エンティティーとして javax.json.JsonObject
、javax.json.JsonArray
、javax.json.JsonStructure
をサポートします。
JSON 処理 (JSON-P) の JSON API は、Padding (JSONP) では JSON とは異なります。
JSON-P が同じクラスパスにある場合は、Jackson と競合しません。
JsonObject
を作成するには、Json.createObjectBuilder()
を呼び出して JSON オブジェクトをビルドして JsonObjectBuilder
を使用します。
例: javax.json.JsonObject
の作成
JsonObject obj = Json.createObjectBuilder().add("name", "Bill").build();
例: javax.json.JsonObject
の対応 JSON
{ "name":"Bill" }
JsonArray
を作成するには、Json.createArrayBuilder()
を呼び出して SON アレイを構築し、JsonArrayBuilder
を使用します。
例: javax.json.JsonArray
の作成
JsonArray array = Json.createArrayBuilder() .add(Json.createObjectBuilder().add("name", "Bill").build()) .add(Json.createObjectBuilder().add("name", "Monica").build()).build();
例: javax.json.JsonArray
の対応 JSON
[ { "name":"Bill" }, { "name":"Monica" } ]
JsonStructure
は JsonObject
および JsonArray
の親クラスです。
例: javax.json.JsonStructure
の作成
JsonObject obj = Json.createObjectBuilder().add("name", "Bill").build(); JsonArray array = Json.createArrayBuilder() .add(Json.createObjectBuilder().add("name", "Bill").build()) .add(Json.createObjectBuilder().add("name", "Monica").build()).build(); JsonStructure sObj = (JsonStructure) obj; JsonStructure sArray = (JsonStructure) array;
JsonObject
、JsonArray
、JsonStructure
、を JAX-RS リソースで直接使用できます。
例: JSON-P を使用した JAX-RS リソース
@Path("object") @POST @Produces("application/json") @Consumes("application/json") public JsonObject object(JsonObject obj) { // do something return obj; } @Path("array") @POST @Produces("application/json") @Consumes("application/json") public JsonArray array(JsonArray array) { // do something return array; } @Path("structure") @POST @Produces("application/json") @Consumes("application/json") public JsonStructure structure(JsonStructure structure) { // do something return structure; }
クライアントから JSON-P を使用して JSON を送信することもできます。
例: JSON-P を使用するクライアント
WebTarget target = client.target(...); JsonObject obj = Json.createObjectBuilder().add("name", "Bill").build(); JsonObject newObj = target.request().post(Entity.json(obj), JsonObject.class);