jan Různé 18. 9. 2023 16:04 18. 9. 2023 14:10

Dobrý deň,

pokúšam sa rozobrať JSON - fbJsonParser

jsontest: fbJsonParser;

JSONUSINT:    STRING:='{"p1": 84.62, "p2": 85.62 }';

jsontest(start := start, shrink := shrink, size := 28, sourceJSON := JSONUSINT[i], jsonItem := jsonItem);

 

Do premenej jsonItem mi načíta prvé elementy z JSON-u(viď. príloha). RestLen aj ukazuje zvyšných 16 znakov ale neviem ako sa posunúť na načítanie ďalšieho elementu. Viete mi poradiť ?

Ďakujem. 

 

Odpovědi 2

M.B. 11. 9. 2023 13:38

Dobrý den,

aby parser pokračoval na další položky, je nutné po prvním volání nastavit proměnnou start na false.

Volání může vypadat například takto:


VAR_GLOBAL
  p1 {OPEN_UP} : REAL;
  p2 {OPEN_UP} : REAL;
END_VAR

PROGRAM prgMain
  VAR
    start : BOOL;
    parsing : BOOL;
    jsontest: fbJsonParserEx;
    JSONUSINT: STRING:='{"p1": 84.62, "p2": 85.62 }';
    JsonInfo : TJsonInfo;
  END_VAR

  IF start THEN
    parsing := true;
  END_IF;

  WHILE parsing DO
    jsontest(start := start, size := 28, sourceJSON := void(JSONUSINT), jsonInfo := jsonInfo);
    SetVarValueByName(varName := jsonInfo.item.name, varValue := JsonInfo.item.value);
    parsing := NOT jsontest.eod;
    start := false;
  END_WHILE;

END_PROGRAM
jan 18. 9. 2023 14:10

Ďakujem, už to funguje.

Tento dotaz je vyřešený.