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.Program-id. jparse1.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) が生成されます。