2017-07-19 10 views
1

進捗状況READ-JSONでWRITE-JSONによって出力されたJSONを受け付けていない問題が発生しています。ネストされたデータリレーションを持つデータセットでTRACKING-CHANGESを使用しています。それはそれは進歩のバグであると信じて私をリードしており、作品、進捗状況4GL:書き込まれたJSONをREAD-JSONできない

yes 
{"dsBox":{"prods:hasChanges":true,"ttEmployee":[{"eid":1,"empname":"Ian","ttBox":[{"boxid":10,"boxdesc":"Ians box"},{"prods:id":"ttBox96513","prods:rowState":"created","boxid":11,"boxdesc":"Stewarts box"}]}],"prods:before":{}}} 
no Error parsing JSON: expected string, but found bracket. (15358) 

私はライン35上のコメントを取る場合:

OUTPUT TO "debug.txt". 

DEFINE VARIABLE lcString AS LONGCHAR NO-UNDO. 
DEFINE VARIABLE hdsBox AS HANDLE NO-UNDO. 
DEFINE VARIABLE lOk AS LOGICAL NO-UNDO. 

DEFINE TEMP-TABLE ttEmployee NO-UNDO 
    BEFORE-TABLE ttEmployeeBefore 
    FIELD eid AS INTEGER 
    FIELD empname AS CHAR. 
DEFINE TEMP-TABLE ttBox NO-UNDO 
    BEFORE-TABLE ttBoxBefore 
    FIELD eid AS INTEGER SERIALIZE-HIDDEN 
    FIELD boxid AS INTEGER 
    FIELD boxdesc AS CHAR. 
DEFINE DATASET dsBox FOR ttEmployee, ttBox 
    DATA-RELATION relat1 FOR ttEmployee, ttBox RELATION-FIELDS (ttEmployee.eid, ttBox.eid) NESTED. 

CREATE ttEmployee. 
CREATE ttBox. 
ASSIGN ttEmployee.eid = 1 
    ttEmployee.empname = "Ian" 
    ttBox.eid = 1 
    ttBox.boxid = 10 
    ttBox.boxdesc = "Ians box". 
    hdsBox = DATASET dsBox:HANDLE. 

ASSIGN TEMP-TABLE ttEmployee:TRACKING-CHANGES = YES 
    TEMP-TABLE ttBox:TRACKING-CHANGES = YES. 

CREATE ttBox. 
ASSIGN ttBox.eid = 1 
    ttBox.boxid = 11 
    ttBox.boxdesc = "Stewarts box" 
    /*ttEmployee.empname = "Stewart"*/ . 

ASSIGN lOk = hdsBox:WRITE-JSON("LONGCHAR", lcString,FALSE , "UTF-8", FALSE, FALSE, TRUE). 

ASSIGN TEMP-TABLE ttEmployee:TRACKING-CHANGES = NO 
    TEMP-TABLE ttBox:TRACKING-CHANGES = NO. 

MESSAGE lOk ERROR-STATUS:GET-MESSAGE(1) SKIP. 
MESSAGE STRING(lcString) SKIP. 

ASSIGN lOk = hdsBox:READ-JSON("LONGCHAR":U, lcString, "EMPTY":U) NO-ERROR. 

MESSAGE lOk ERROR-STATUS:GET-MESSAGE(1) SKIP. 

この例では、次の出力を生成します。

私はOpenEdge 11.4を使用しています。

+0

どのバージョンのProgressを使用していますか?私は11.6.3でそれを試して、それはコメントの有無にかかわらず働いた。 – TheDrooper

+1

私は11.4を使用しています。 11.6で修正されたのかもしれない。 11.6ではJSON出力が同じですか? –

+0

はい、ID「ttBox96513」を除いて同じです。余計な/括弧はありません。 – TheDrooper

答えて

1

これは進捗状況のバグです。修正するには、JSONの前のテーブルに無意味なフィールドを挿入する必要があります。

"prods:before":{"Progress11.4bug":"Need this string or Progress will barf"} 

進捗状況によっては、何らかの理由で前テーブルが空であるとは思われません。

関連する問題