Xbasic
json_composite Function
Syntax
json_composite(parent as C, relations as C, jsonText as C [,mode as C [,limits as C [,views as C [,calcs as C]]]] )
Arguments
- parentCharacter
The top-most node of the tree. IE, the 'root'.
- relationsCharacter
JSON object defining the data relationships.
- jsonTextCharacter
The flat JSON object.
- modeCharacter
Can be 'sparse' to eliminate child keys from the output.
- limitsCharacter
'table' : 'limit' pairs.
- viewsCharacter
Defines groups to extract from the flattened tables.
- calcsCharacter
Description
Turns flat lists into a tree structure.
Discussion
json_composite creates a tree from a flat JSON object using a reference example relational structure.
dim relations as c =<<%str% { "orders" : { "customerId" : "id", "orderDetails" : { "orderId2" : "orderId" } } } %str% dim def as c def =<<%txt% { "customers": [ { "id": "alfki", "name": "305 - 14th Ave. S.\nSuite 3B"}, { "id": "bolid", "name":"name 2"} ], "orders": [ { "orderId": 1, "customerId": "alfki", "orderData": "12/1/2013"}, { "orderId": 2, "customerId": "bolid", "orderData": "12/2/2013"}, { "orderId": 3, "customerId": "alfki", "orderData": "12/3/2013"}, { "orderId": 4, "customerId": "alfki","orderData": "12/1/2013"} ], "orderDetails": [ { "lineitemId": 1, "orderId2": 1, "prodId": 1, "qty": 3}, { "lineitemId": 2, "orderId2": 2, "prodId": 6, "qty": 6}, { "lineitemId": 3, "orderId2": 2, "prodId": 9, "qty": 7}, { "lineitemId": 4, "orderId2": 1, "prodId":3, "qty": 2}, { "lineitemId": 5, "orderId2": 1, "prodId": 3, "qty": 8}, { "lineitemId": 6, "orderId2": 3, "prodId": 4, "qty": 9}, { "lineitemId": 7, "orderId2": 3, "prodId": 3, "qty": 1}, { "lineitemId": 8, "orderId2": 6, "prodId": 2, "qty": 3} ] } %txt% t1 = now() delete output output = json_composite("customers",relations,def,"") t2 = now() showvar( json_reformat("{"+output+"}",.t.), "took "+(t2-t1))
See Also