ENTMF 

付録 B - JSON 配列の解析

JSON テキスト文字列に配列が格納されている場合は、OCCURS 句または OCCURS DEPENDING ON 句を含む COBOL データ項目に解析できます。

各 JSON 配列の要素の数は、関連付けられる表のデータ項目と同じである必要があります。JSON 配列の要素の方が少ない場合、対応する要素がない COBOL 表の要素が変更されることはありませんが、JSON 配列の値の方が表の項目よりも多い場合は、対応する項目がない値が無視されます。どちらの場合も、JSON-STATUS 設定がゼロ以外になります。

次の JSON テキスト文字列があるとします。

{"mem-file":{"rec":[{"SND":9,"pid":1289,"txt":"Hello"},{"SND":9,"pid":1478,"txt":"World"},
{"SND":9,"pid":8746,"txt":"!"}]}}

この文字列を次の COBOL プログラムに渡すと、どのように解析されるかがわかり、結果を照会して操作できるようになります。

       Identification division.
       Program-id. jparse1.
       Data division.
       Working-storage section.
       01 mem-file.
           03 rec occurs 3.
               05 snd usage comp-1.
               05 pid pic 9999 usage display.
               05 txt pic x(12).
       01 cnt pic 9 value zeroes.
       Linkage section.
       01 json-str pic x(128).
       Procedure division using json-str.
       display "Parsing....".
       JSON PARSE json-str into mem-file with DETAIL
       END-JSON.
       perform 3 times
           add 1 to cnt
           if snd(cnt) equal to 9 then
               display "PID is " pid(cnt)
               display "Message text is '" txt(cnt) "'"
           end-if
       end-perform.
       display "Status is: " JSON-STATUS.
       display "Code is: " JSON-CODE.
       goback.
       End program jparse1.

この JSON PARSE 文を実行すると、グループ rec に JSON 配列から 3 つの要素が取り込まれます。これで、一致する COBOL データ項目および表の指標を使用して、任意の方法でテキストを操作できます。

null は特殊な値であり、対応するデータ項目の割り当てをスキップするために使用できます。たとえば、次の JSON テキストの解析では、myTable の 3 番目および 5 番目のデータ項目のみが設定されます。

次の JSON テキストがあるとします。

{"mt":{"myTable":[null, null, 21, null,66]}}

このテキストを COBOL 表に解析すると、表の 3 番目および 5 番目の指標のみが取り込まれます。それ以外の指標については、非例外コード (64) が生成されます。