我为2个临时表定义了一个数据集,该数据集与某个字段链接(比方说:item)。例如:
define temp-table items no-undo
field item as char.
define temp-table customer no-undo
field item as char serialize-hidden
field custname as char
field price as dec.
define dataset dsitemcust for items,customer
data-relation dr1 for items,customer relation-fields(item,item) nested.
这给出了json输出:
{
"items": [
{
"item": "abc_item",
"customer": [
{
"custname": "uvw_cust",
"price": 123
},
{
"custname": "xyz_cust",
"price": 234
},
....
]
},
{
"item": "def_item",
"custname": [{},{},...]
}
...
]
}
但我希望得到这样的东西: [ 项目为关键 , custname和price 为 值 < / strong>(在 custnum 再次成为关键字的对象数组中]]
{ "abc_item" : [{"uvw_cust" : 123}, {"xyz_cust" : 234}, ...],
"def_item" : [{}, .. ],
..
}
这是否可行/可实现进行中的开放? (进展版本:10.2B)
答案 0 :(得分:1)
可以这样做,但您必须手动构建JSON对象。
USING Progress.Json.ObjectModel.*.
DEFINE VARIABLE oJson AS JsonObject NO-UNDO.
DEFINE VARIABLE oArray AS JsonArray NO-UNDO.
DEFINE VARIABLE oRec AS JsonObject NO-UNDO.
DEFINE TEMP-TABLE items NO-UNDO
FIELD item AS CHARACTER.
DEFINE TEMP-TABLE customer NO-UNDO
FIELD item AS CHARACTER
FIELD custname AS CHARACTER
FIELD price AS DECIMAL.
/* Create some records here. */
oJson = NEW JsonObject().
FOR EACH items NO-LOCK:
oArray = NEW JsonArray().
FOR EACH customer WHERE customer.item = items.item NO-LOCK BREAK BY customer.item:
oRec = NEW JsonObject().
oRec:ADD(customer.custname, customer.price).
oArray:ADD(oRec).
END.
oJson:ADD(items.item, oArray).
END.
oJson:WriteFile("test.json", TRUE).
这会将oJson对象写入文件,但您可以将其用作输出。