Как создать экземпляр 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
Обходной путь, предложенный репортером ошибки, изменяет функцию на это:
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;