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.JsonObjectjavax.json.JsonArrayjavax.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"
  }
]

JsonStructureJsonObject および 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;

JsonObjectJsonArrayJsonStructure、を 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);