【小技】コンパイルモードでJSON Parseのエラーを回避するには
【小技】コンパイルモードでJSON Parseのエラーを回避するには
ドキュメントに述べられているように,JSON Parseは『JSON文字列』を解析するコマンドです。JSON文字列には,"{}"のようなオブジェクトリテラルだけでなく,日付・数値・文字列リテラルも含まれます("[]"のような配列リテラルは含まれません)。
http://doc.4d.com/4Dv16R2/4D/16-R2.1620/JSON-Parse.301-3111785.ja.html
JSON Parseの返り値は,オブジェクト・テキスト・ブール・ポインター・実数のいずれかとなっています。関数の型がしっかり宣言されている4Dの言語において,これは非常に例外的な事例です(他にはOB Get, Choose, WA Evaluate javascriptなどが挙げられます)。
代入文の左オペランドの型が不明でも,右オペランドの型が宣言されていれば,コンパイラーは,はその情報に基づいて型を推定することができます(自動変数定義)。
http://doc.4d.com/4Dv16R2/4D/16-R2.1620/Typing-Guide.300-3111291.ja.html
http://doc.4d.com/4Dv16/4D/16/Compiler-page.300-3048854.ja.html
しかし,JSON Parseの型は決まっていないため,代入文に基づいて変数の型を宣言することはできません。値を受け取る変数は,明示的に宣言されている必要があります。コンパイルモードでJSON Parseから返される値がその変数の型と一致しない場合,『ポインターによる変数の再定義をしようとしています』エラーが返される可能性があります。
こうしたエラーを避けるためには,JSON Parseのオプション引数を使用し,返り値の型を指定する必要があります(WA Evaluate javascriptにも同じようなオプションがあります)。そうすれば,JSON Parseから返される値の型が評価したJSON文字列の内容に左右されずで済むからです。
http://doc.4d.com/4Dv16R2/4D/16-R2.1620/JSON-Parse.301-3111785.ja.html
JSON Parseの返り値は,オブジェクト・テキスト・ブール・ポインター・実数のいずれかとなっています。関数の型がしっかり宣言されている4Dの言語において,これは非常に例外的な事例です(他にはOB Get, Choose, WA Evaluate javascriptなどが挙げられます)。
代入文の左オペランドの型が不明でも,右オペランドの型が宣言されていれば,コンパイラーは,はその情報に基づいて型を推定することができます(自動変数定義)。
http://doc.4d.com/4Dv16R2/4D/16-R2.1620/Typing-Guide.300-3111291.ja.html
http://doc.4d.com/4Dv16/4D/16/Compiler-page.300-3048854.ja.html
しかし,JSON Parseの型は決まっていないため,代入文に基づいて変数の型を宣言することはできません。値を受け取る変数は,明示的に宣言されている必要があります。コンパイルモードでJSON Parseから返される値がその変数の型と一致しない場合,『ポインターによる変数の再定義をしようとしています』エラーが返される可能性があります。
こうしたエラーを避けるためには,JSON Parseのオプション引数を使用し,返り値の型を指定する必要があります(WA Evaluate javascriptにも同じようなオプションがあります)。そうすれば,JSON Parseから返される値の型が評価したJSON文字列の内容に左右されずで済むからです。
miyako- 投稿数 : 468
登録日 : 2016/07/05
Permissions in this forum:
返信投稿: 不可
|
|