如何通过解析json数组来创建TSuperObject实例?

时间:2014-09-02 12:22:00

标签: delphi delphi-6 superobject

这是有效的json

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

如何从此TSuperObject创建string

2 个答案:

答案 0 :(得分:2)

如果您在浏览器中打开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;

答案 1 :(得分:2)

Delphi 6有一个错误。

SO()函数尝试转换字符串的值时,它会引发EIntOverflow

该错误是由于这个功能:

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

This is the bug in the google's issue tracker

bug的记者提出的解决方法是将功能改为:

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+}