JSONParsedState

JSON が解析されていない場合は 0、解析されていて無効な場合は -1、または解析されていて有効な場合は JSON タイプを表す正の数を返します。

構文 

JSONParsedState (json)

引数 

json - JSON オブジェクトまたは配列を含むテキスト式またはフィールド

戻り値のデータタイプ 

数字

起点バージョン 

22.0

説明 

JSONParsedState は指定した JSON が解析されたか (およびメモリにバイナリ表現があるか)、および JSON が有効か無効かを示します。関数の戻り値:

  • JSON が解析されていない (メモリにバイナリ表現が存在しない) 場合は 0 を返します。

  • JSON は解析されたが無効な場合は -1 を返します。この JSON が他の JSON 関数と一緒に使用された場合、「?」とエラーメッセージを返します。

  • JSON が有効で解析されている場合は 1-6 を返します。値は JSONSetElement で定義されている JSON タイプの 1 つに対応します。

JSON テキストを明示的に解析するには、JSONParse 関数を使用します。

例 1 

  1. JSONParse ("[3]")[3] を返します。JSONParse は有効な JSON の場合、入力 JSON をテキストとして返すためです。

  2. Let ($a = JSONParse ("[3") ; JSONParsedState ($a)) は $a が解析されたが無効な JSON 配列に設定されているため -1 を返します。

  3. Let ($a = "[3]" ; JSONParsedState ($a)) は $a が解析されていないため 0 を返します。

  4. JSONParsedState (JSONParse (Pi)) は値 Pi が解析されたが有効な JSON ではないため -1 を返します。

  5. Let ($a = JSONSetElement ("" ; "a" ; "b" ; JSONString) ; JSONParsedState ($a)) は JSONSetElement が $a に格納されている解析された JSON オブジェクトを作成したため 3 を返します。

  6. Let ($a = JSONParse ("[3]") ; JSONParsedState ($a)) は $a が解析されていて JSON 配列が含まれているため 4 を返します。

  7. JSONParsedState (JSONParse ("")) は空の文字列 (無効な JSON) が解析されたため -1 を返します。

例 2 

コピー
Let ([
  a = "[3";                   /* 文字列が無効な JSON 配列です */
  b = JSONParse (a);          /* エラー: 入力が無効な JSON です */
  c = JSONParsedState (a);    /* 0: 'a' はまだテキストのみです (解析されていません) */
  d = JSONParsedState (b);    /* -1: 'b' は解析されましたが無効です */
  e = JSONFormatElements (b); /* エラー: 'b' は無効です */
  f = JSONFormatElements (a)  /* エラー: 'a' 内の JSON テキストは無効です */
];
  a &¶& b &¶& c &¶& d &¶& e &¶& f
)

この関数が返す値は次のとおりです:

コピー
[3
? * Line 1, Column 3
  Missing ',' or ']' in array declaration
0
-1
? * Line 1, Column 3
  Missing ',' or ']' in array declaration
? * Line 1, Column 3
  Missing ',' or ']' in array declaration

対照的に、変数 a が有効な JSON 配列 ("[3]") である場合、この例は次の値を返します:

コピー
[3]
[3]
0
4
[ 3 ]
[ 3 ]

これらの違いに注意してください:

  • 2 行目: JSONParse ( a ) は JSONParse に渡された元のテキストを返します。

  • 4 行目: JSONParsedState ( b ) は変数 b が解析されて有効な JSON 配列であることを反映しています。

  • 5 行目と 6 行目: JSONFormatElements は b の解析された JSON と、a のテキスト JSON の両方のフォーマットされたテキストを返します。