JSONSerializeの結果を確認してみる

OutSystemsでデータをJSON形式に変換するJSON Serializeの結果がどうなるのか確認してみました。

JSON Deserializeに渡して使う場合は、気にしなくていいのですが、JavaScriptとやりとりするときには知っておきたいので。

きっかけは、Aggregateで取得した結果をJSON SerializeしてJavaScriptライブラリのAPIに渡すとうまく表示されなかったことです。

いくつかのパターンで確認してみましたが、想定通りの結果が返ってきました。

Aggregateの構成はうっかりすると誤解しますが、各レコードが{“Entity名”:{Entityのレコードを展開したオブジェクト},…}の形式になることだけ覚えておけば大丈夫そうです。

公式ドキュメント

動作確認環境
Platform Version:11.0.212.0
Service Studio Version:11.0.522.0

確認方法

テスト用の画面を作成し、以下の型の変数をPreparation内でJSON Serializeして、その結果を画面内で表示することで確認します。

対象:

  • Basic Data Type
  • Aggregateの結果
  • List of Basic Data Type
  • Record
  • 階層構造のStructure(他のStructureをAttributeに持つStructure)

結果

Basic Data Type

JSON Serializeの対象外です。指定すると以下のメッセージが出ました。対象データ型はRecordかList of Recordsと公式ドキュメントにも書いてありますね。

‘Record or Record List’ data type is required instead of ‘Integer’.

Aggregateの結果

フォーマット:[{“Entity名”: {“Attribute名”: 値, “Attribute名”, … },…}]

例:[{“ContactWithUser”:{“Id”:116,”Name”:”Abel Pasquale”,”Address”:”Abel.Pasquale@mail.com”,”BirthDate”:”1998-07-18″,”City”:”San Francisco, USA”,”UserId”:11}},{“ContactWithUser”:{“Id”…

全体がListなので、JSONの配列([])に対応していますね。

各レコードは、JSON Object({})。Aggregateに含まれるEntity分だけ、”Entity名”をプロパティに、そのEntityのレコードがJSON Objectとしてぶら下がる形。

この例の場合は、ContactWithUserというEntity1つだけでAggregateが構成されています。

List of Basic Data Type

例: [11,31,19]

これは例だけで明らかですね。Integer Listの場合です。

Record

Entity1つとBasic Data Type2つでRecordを作ってJSON Serializeしてみました。

例:{“ContactWithUser”:{“Id”:91,”Name”:”Zbyszek Piestrzeniewicz”,”Address”:”Zbyszek.Piestrzeniewicz@mail.com”,”BirthDate”:”1998-06-23″,”City”:”Denver, USA”,”UserId”:2},”Boolean”:true,”Intgeger”:33}

これも例を見れば明らかですね。Recordの各Attribute名をプロパティにしています。

階層構造のStructure

他のStructureをAttributeに持つStructure。

子のStructureは、Integer型とBoolean型を1つずつ持つ。

親は子のStructureとInteger型を1つずつ持つ構造。

例: {“ChildStructure”:{“Integer”:123,”Boolean”:true},”Integer”:234}

シェアする

  • このエントリーをはてなブックマークに追加

フォローする