ここは旧式の4DドキュメントWebサイトです。最新のアップデートされたドキュメントを読むには新サイトをご利用下さい→ developer.4d.com |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
Selection to JSON
|
Selection to JSON ( aTable {; aField}{; aField2 ; ... ; aFieldN}{; template}) -> 戻り値 | ||||||||
引数 | 型 | 説明 | ||||||
aTable | テーブル |
![]() |
シリアライズするテーブル | |||||
aField | フィールド |
![]() |
シリアライズするフィールドを指定 | |||||
template | オブジェクト |
![]() |
プロパティ名と取り出したいフィールドを指定するポインターをオブジェクトで渡す | |||||
戻り値 | テキスト |
![]() |
シリアライズされた JSON 配列を含む文字列 | |||||
Selection to JSONコマンドは、 aTable のカレントセレクション内のレコードと同数の要素を持つJSON配列を含んだ文字列を返します。配列のそれぞれの要素はセレクションのフィールドのラベルと値を含んだJSONオブジェクトです。
aTable 引数のみを渡した場合、テーブル内の、全てのフィールドの値のうち、JSON で表現できるものをJSON 配列で返します。BLOB フィールドとピクチャーフィールドは無視されます。
aTable 内の一部のフィールドのみ取り出したい場合、 aField 引数か、 template 引数を使ってその部分を指定することが出来ます:
このコマンドはオブジェクト型フィールドをサポートします: これらのフィールドのデータは自動的にJSONフォーマットへと変換されます(ピクチャー属性値は"[object Picture]" という文字列に変換されるという点に注意してください)。以下の4D宣言は、"テーブルのカレントセレクション内のobjectField の全ての値からJSONを生成せよ"、と解釈されるという点に注意して下さい:
Selection to JSON([aTable];objectField)
注: Selection to JSONコマンドを呼び出した後、カレントセレクションは同じままですが、カレントレコードはロードされておらず、変更されている可能性もあります(その場合、カレントセレクションの最後のレコードがカレントレコードになります)。Selection to JSONコマンドのあと、カレントレコード内のフィールドの値を使用したい場合にはLOAD RECORD コマンドと、(必要であれば)GOTO SELECTED RECORD コマンドを組み合わせて呼んで下さい。
以下のセレクションを JSON 文字列で表現する場合:
1) [Members] テーブル内の全てのフィールドの値を取り出す場合:
$jsonString :=Selection to JSON([Members])
// $jsonString =[{"LastName":"Durant","FirstName":"Mark","Address":
//"25 Park St","Zip code":"15205","City":"Pittsburgh"},{"LastName":
//"Smith","FirstName":"John","Address":"24 Philadelphia Ave","Zip code":
//"75203","City":"Dallas"},{"LastName":"Anderson","FirstName"
//:"Adeline","Address":"37 Market St","Zip code":"45205","City":"Cincinnati"},...]
2) フィールドを指定して、取り出すフィールドを二つだけに限定したい場合:
QUERY([Members];[Members]LastName="A@")
$jsonString :=Selection to JSON([Members];[Members]LastName;[Members]City)
// $jsonString = [{"LastName":"Anderson","City":"Cincinnati"},{"LastName":"Albert","City":"Houston"}]
3) 一つのフィールドだけを取り出したし、異なるラベルを使用したい場合。
この場合、template 表記を使用する事ができます:
C_OBJECT($template)
OB SET($template;"Member";->[Members]LastName) // 単一のフィールドを指定、カスタムのラベルを使用
ALL RECORDS([Members])
$jsonString :=Selection to JSON([Members];$template)
// $jsonString = [{"Member":"Durant"},{"Member":"Smith"},{"Member":"Anderson"},{"Member":"Albert"},{"Member":"Leonard"},{"Member":"Pradel"}
template 表記を使用する事で、異なるテーブルからフィールドを書き出す事ができます:
C_OBJECT($template)
C_TEXT($jsonString)
OB SET($template;"Last name";->[Emp]LastName)
OB SET($template;"First name";->[Emp]FirstName)
OB SET($template;"Company";->[Company]LastName) //[Emp]LastName フィールドと重複してしまうのでカスタムのラベルを使用
ALL RECORDS([Emp])
SET FIELD RELATION([Emp]UUID_Company;Automatic;Do not modify)
$jsonString:=Selection to JSON([Emp];$template)
SET FIELD RELATION([Emp]UUID_Company;Structure configuration;Do not modify)
プロダクト: 4D
テーマ: JSON
番号:
1234
初出: 4D v14
変更: 4D v16 R4
ランゲージリファレンス ( 4D v20 R7)