JSON InterchangeフォーマットからRESTスキーマへの変換に関する必知事項
RESTスキーマは、ネイティブ・フォーマット・ビルダー・ウィザードの「タイプの選択」ダイアログで、JSON Interchangeフォーマット・サンプルから作成することを選択できます(図37-13を参照)。スキーマの生成中、このウィザードは次のことを試行します。
-
ネームスペース情報のないRESTスキーマを生成します。
-
ネームスペース情報のないJSON Interchangeフォーマット・サンプルを消費し、適切なネームスペースを持つXMLを生成します。
ノート:
JVMプロパティsoa.rest.nillable.support
を使用して、SOA RESTサービスのnillableサポートを有効にします。値:
false
(デフォルト): レスポンス内の空の文字列に対して、常にnull
を返します。たとえば、ペイロードにデータ"mileage" : ""
が含まれる場合、レスポンスは"mileage" : null
を返しますtrue
:""
とnull
を区別します。たとえば、ペイロードにデータ"mileage" : ""
が腹案れる場合、レスポンスは"mileage" : ""
を返します
soa.rest.nillable.support
をtrue
に設定するには:
- NXSD要素に属性
nillable="true"
を含めます - XML要素に属性
xsi:nil="true"
を含めます
例:
soa.rest.nillable.supported
がtrue
の場合、mileage
要素は、入力に指定された内容(""
またはnull
)に合うように""
またはnull
を返します。
{
"sampleData" : {
"dateTime" : "2022-04-07 10:58:30",
"mileage" : ""
},
"userInfo" : {
"user" : "Davidson",
"ctryCode" : "IN"
}
}
soa.rest.nillable.supported
がfalse
(デフォルト)の場合、mileage
要素は常にnull
を返します。入力に指定された内容(""
またはnull
)には関係ありません。
{
"sampleData" : {
"dateTime" : "2022-04-07 10:58:30",
"mileage" : null
},
"userInfo" : {
"user" : "Davidson",
"ctryCode" : "IN"
}
}
変換を処理できない場合もあります。
-
連続したグループ要素の下にある、名前が重複した兄弟要素は変換できません。これはJSONではキーが重複したオブジェクトに変換されてしまい、こうしたオブジェクトは無効であるためです。
-
ネームスペース情報が保持され、次の例に示すJSON Interchangeフォーマット・サンプルの変換が可能になります。これは、基礎となるスキーマに複数のネームスペースからの要素および属性があるためです。
<schema xmlns:us="http://xmlns.oracle.com/addresses/us" xmlns:india="http://xmlns.oracle.com/addresses/india" targetNamespace="http://xmlns.oracle.com" xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <import ...> <element name="Person"> <complexType> <choice> <element ref="us:Address"/> <element ref="india:Address"/> </choice> </complexType> </element> </schema> <schema targetNamespace="http://xmlns.oracle.com/addresses/us" xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <element name="Address"> <complexType> <sequence> <element name="Street" type="xsd:string"/> <element name="City" type="xsd:string"/> <element name="State" type="xsd:string"/> <element name="ZipCode" type="xsd:integer" minOccurs="0"/> </sequence> </complexType> </element> </schema> <schema targetNamespace="http://xmlns.oracle.com/addresses/india" xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <element name="Address"> <complexType> <sequence> <element name="Street" type="xsd:string"/> <element name="City" type="xsd:string"/> <element name="District" type="xsd:string" minOccurs="0"/> <element name="State" type="xsd:string"/> <element name="PinCode" type="xsd:integer" minOccurs="0"/> </sequence> </complexType> </element> </schema>