如何在IBM COBOL的JSON GENERATE中抑制根元素
在IBM COBOL中移除JSON GENERATE生成的根元素
你当前的代码会生成包含根元素CBL-GROUP的JSON:
JSON GENERATE WS-JSON FROM CBL-GROUP COUNT IN WS-JSON-LEN NAME OF FIELD1 is "name" FIELD2 is "address"
生成的JSON结果:
{ "CBL-GROUP": { "name": "Smith", "address": "New Orleans" } }
要去掉根元素CBL-GROUP,可以采用以下两种有效方法:
方法一:使用WITHOUT ROOT短语(IBM Enterprise COBOL 6.2及以上版本)
如果你的COBOL版本为6.2或更高,直接在JSON GENERATE语句中添加WITHOUT ROOT即可跳过根组的包装:
JSON GENERATE WS-JSON FROM CBL-GROUP COUNT IN WS-JSON-LEN NAME OF FIELD1 is "name" FIELD2 is "address" WITHOUT ROOT
生成的目标JSON:
{ "name": "Smith", "address": "New Orleans" }
方法二:直接指定目标字段(兼容旧版本)
若你的COBOL版本不支持WITHOUT ROOT,可以直接指定要生成的字段而非整个组:
JSON GENERATE WS-JSON FROM FIELD1, FIELD2 COUNT IN WS-JSON-LEN NAME OF FIELD1 is "name" FIELD2 is "address"
这种方式会直接将指定字段作为JSON的顶层键值对,不会生成根组元素。
注意:SUPPRESS短语用于隐藏空值字段,无法用来移除根元素,这也是你之前编译失败的原因。
内容的提问来源于stack exchange,提问作者Alexander Meins
相关产品推荐
相关产品推荐

