Page History
...
XPRIM_JsonObject
...
や
...
XPRIM_JsonArray
...
を
...
JSON
...
文字列にシリアル化することが可能ですが、目的が
...
JSON
...
文字列の構築、もしくは
...
XPRIM_HttpRequest
...
用の
...
JSON
...
本体の構築だけである場合、JSON
...
文字列が効率よく構築できるよう設計されている
...
XPRIM_JsonWriter
...
を利用してください。特に大きな
...
JSON
...
データの場合、XPRIM_JsonWriter
...
を利用した方がパフォーマンスがずっと良く、メモリのフットプリントもより低く抑えられます。
...
例えば、XPRIM_JsonWriter
...
を使って、次の
...
JSON 文字列を構築したとします。
| Wiki Markup |
|---|
文字列を構築したとします。 \{ "name": \{ "given":"John", "surname":"Smith" \}, "age":45, "contactNo": \[ \{ area:"02", no:"9378 2867", type:"landline" \}, \{ no:"0468 732 371", type:"mobile" \} \] \} |
最初に
...
XPRIM_JsonWriter
...
オブジェクトを作成します。
...
Define_Com
...
Class(#XPRIM_JsonWriter)
...
Name(#Writer)
...
ライターの出力モードを指定します。次の
...
3
...
種類の出力モードがサポートされています。
- 文字列
- ファイル
- HTTP 要求本文
出力モードを指定するには、次のメソッドを使用します。
- SetOutputToString
- SetOutputToFile
- SetOutputToHttpRequest
次の例では、文字列を生成するので、出力モードを String (文字列) に設定します。
#Writer.SetOutputToString
BeginObject (または BeginArray) を使って、ルート・オブジェクト (またはアレイ) を開始します。
#Writer.BeginObject
"name" メンバを書き込みます。この値はオブジェクトです。
BeginObject を Name パラメータと共に使用して、オブジェクト・メンバを作成します。
#Writer.BeginObject Name('name')
So far, our JSON string looks like this:JSON 文字列は次のようになります。
{
...
"name":
...
{
次に "given" と "surname" メンバを書き込みます。
#Writer.WriteString Name('given') Value('John')
#Writer.WriteString Name('surname') Value('Smith')
name メンバ・オブジェクトを閉じます。
#Writer.EndObject
ここまでで、JSON 文字列は次のようになります。
{
...
"name":
...
{
"given":"John",
"surname":"Smith"
}
"age" メンバを書き込みます。
#Writer.WriteNumber Name('age') Value(45)
そして、"contactNo" メンバを書き込みます。これはアレイです。 BeginArray を使用します。
#Writer.BeginArray Name('contactNo')
次に最初の contactNo アイテムを書き込みます。これはオブジェクトなので、BeginObject アイテムを書き込みます。これはオブジェクトなので、BeginObject を使います。 アレイ要素の書き込み時はインデックスを指定する必要はありません。これは、常に順番に書き込まれていくからです。
#Writer.BeginObject
#Writer.WriteString Name('area') Value('02')
#Writer.WriteString Name('no') Value('9378 2867')
#Writer.WriteString Name('type') Value('landline')
#Writer.EndObject
2 番目の contactNo アイテムを書き込みます。
#Writer.BeginObject
#Writer.WriteString Name('no') Value('0468 732 371')
#Writer.WriteString Name('type') Value('mobile')
#Writer.EndObject
contactNo アレイを閉じます。
#Writer.EndArray
ルート・オブジェクトを閉じます。
#Writer.EndObject
これで、AsString これで、AsString メソッドを使ってコンストラクト JSON 文字列にアクセスできるようになります。
#MyJsonString := #Writer.AsString