2017-10-11 10 views
0

J'ai un ensemble de données défini pour 2 tables temporaires liées à un champ (permet de dire: élément). Par exemple:Créer un fichier JSON avec une clé dynamique (Progress 4GL)

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. 

Cela donne la sortie JSON comme ceci:

{ 
    "items": [ 
    { 
     "item": "abc_item", 
     "customer": [ 
      { 
       "custname": "uvw_cust", 
       "price": 123 
      }, 
      { 
       "custname": "xyz_cust", 
       "price": 234 
      }, 
      .... 
     ] 
    }, 
    { 
     "item": "def_item", 
     "custname": [{},{},...] 
    } 
    ... 
    ] 
} 

Mais je veux obtenir quelque chose comme ceci: [élément comme clé et, custname et prix comme valeur (dans la matrice de l'objet où NumCli est la clé à nouveau)]

{ "abc_item" : [{"uvw_cust" : 123}, {"xyz_cust" : 234}, ...], 
    "def_item" : [{}, .. ], 
    .. 
} 

Est-ce possible/réalisable dans OpenEdge progrès? (version de progression: 10.2B)

Répondre

1

Cela peut être fait, mais vous devrez générer manuellement l'objet JSON. Cela écrit l'objet oJson dans un fichier, mais vous pouvez l'utiliser comme sortie.

+0

Merci pour la réponse @TheDrooper. Cet exemple de code fonctionne bien dans Progress 11.x mais malheureusement, ne fonctionne pas dans la version 10.2B. Y at-il une solution de contournement pour le faire fonctionner dans 10.2B? – Mahesh

+0

Il semble que Progress 10.2B ne supporte que les tables-to-JSON que vous avez dans votre exemple. Vous pouvez essayer de créer vos propres fonctions de chaîne JSON, mais cela pourrait représenter beaucoup de travail. – TheDrooper