2

我使用 Super Object 作为 JSON 解析器。我在使用第三方 API 时遇到了问题。API 返回 JSON,元素名称中带有空格。但是,超级对象不适用于空格。我观察到它将空格视为结束引号的行为,因此忽略了空格之后的任何内容。

{ "state abbreviation":"KY", "state":"Kentucky" }

我相信关键是这state也是另一个元素的名称。当我尝试读取state abbreviation它时,它会返回值state

我怎样才能解决这个问题?

4

1 回答 1

2

这个 MCVE 表明 SuperObject 使用元素名称中的空格可以正常工作,我使用了最新版本的源代码和 Delphi XE7:

program SO40958627;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  SuperObject,
  System.SysUtils;

var
  obj: ISuperObject;

begin
  try
   obj := SO('{ "state":"Kentucky", "state abbreviation":"KY" }');
   Writeln(obj.AsObject.S['state']);
   Writeln(obj.AsObject.S['state abbreviation']);
   Readln;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.

程序输出:

Kentucky 
KY

看来您没有使用最新版本的源代码,或者该缺陷位于程序的其他位置...

于 2016-12-04T13:16:35.217 回答