Как создать экземпляр TSuperObject, проанализировав массив json?

Это действительный json:

[{"id":1, "name":"foo"}, {"id":2, "name":"bar"}]

Как создать TSuperObject из этой string?

2 ответа

Есть ошибка для Delphi 6.

Когда функция SO() пытается преобразовать значение строки, она вызывает EIntOverflow.

Ошибка связана с этой функцией:

class function TSuperAvlEntry.Hash(const k: SOString): Cardinal;

Это ошибка в трекер google google

Обходной путь, предложенный репортером ошибок, меняет эту функцию:

class function TSuperAvlEntry.Hash(const k: SOString): Cardinal;
var
 h: cardinal;
 i: Integer;
begin
 h := 0;
{$Q-}
 for i := 1 to Length(k) do
 h := Cardinal( h*129 + ord(k[i]) + $9e370001);
 Result := h;
end;
{$Q+}


Если вы откроете readme.html внутри браузера, вы увидите в самом начале этого документа:

Разбор структуры данных JSON

var
 obj: ISuperObject;
begin
 obj := SO('{"foo": true}');
 obj := TSuperObject.ParseString('{"foo": true}');
 obj := TSuperObject.ParseStream(stream);
 obj := TSuperObject.ParseFile(FileName);
end;

licensed under cc by-sa 3.0 with attribution.