Как создать экземпляр 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;
Другие вопросы по тегам