【问题标题】:Extracting values from JSON file using SuperObject使用 SuperObject 从 JSON 文件中提取值
【发布时间】:2014-08-25 05:29:27
【问题描述】:

正如标题所暗示的,我正在尝试使用 Delphi 7 和 SuperObject 库从一个非常简单的结构化 JSON 文件中提取一个值,但我还没有找到任何涵盖这个最基本主题的示例,并希望一些专家这里也许可以为我提供一些帮助。

我拥有的是一个简单的 JSON 文件(名为 test.json),它具有以下结构,我想知道如何在 delphi 中加载此文件,然后从提供的信息。

我确信这是一项极其简单的任务,但正如我之前所说,我无法找到任何有关如何执行此操作的示例,希望能得到一些帮助。

示例 JSON 文件

{
  id: 212,
  first_name: "bob",
  last_name: "smith",
  age: 25
} 

【问题讨论】:

    标签: json delphi parsing superobject


    【解决方案1】:

    首先,声明对象的一个​​实例,在本例中为ISuperObject 接口。然后,使用TSuperObject.ParseString 甚至只是SO 分配它来解析您的JSON 字符串。然后,您可以使用单字母属性读取值,具体取决于您正在读取的值的类型...

    var
      O: ISuperObject;
      ID, Age: Integer;
      FirstName, LastName: String;
    begin
      O:= SO(MyJsonString);
      ID:= O.I['id'];
      FirstName:= O.S['first_name'];
      LastName:= O.S['last_name'];
      Age:= O.I['age'];
    end;
    

    但请记住,在 Stack Overflow,事情通常不会以这种方式进行。我回答的唯一原因是因为它又快又容易,而且你似乎是新来的。有很多关于如何使用 SuperObject 的资源;在您随库下载的演示中,在整个 Google 中,以及在 Stack Overflow 中。

    【讨论】:

    • 我确实看过演示,也许我有一个过时的库版本,但我看不到任何显示信息提取的内容,而且同样适用于 SO。我很感谢您的回复,但不知道为什么任何认真的问题都会被认为是不值得的,但是如果一个人正在寻求知识,则应该在不影响经验(或缺乏经验)的情况下提供它,但这只是我的 $.02
    • 很遗憾,Stack Overflow 不是来帮助您学习的。你应该努力做到这一点。当您遇到特定问题时,您可以提出具体问题。否则,您的问题很可能会引起负面关注。
    • 你可以用O:= TSuperObject.ParseString(PChar(MyJsonString), False);代替O:= SO(MyJsonString);
    • @user3803565 该库包含一个readme.html 包含这样的基本示例code.google.com/p/superobject/source/browse
    • @user3803565,好吧,历史上的想法(很长一段时间都不是真的)是 Stack Overflow 将成为专业人士的网站,人们在做一些研究后询问的网站展示他们到目前为止所知道的。它不应该是你来的网站,只是说“如何做到这一点?”,你会得到一个解决方案。另外,此时we don't even have any close vote to fight against them
    【解决方案2】:

    接下来是我的例子

    function GetLastName(const FileName: string): string;
    var
      O: ISuperObject;
    begin
      // transport json file to superobject;
      O:= TSuperObject.ParseFile(FileName, False);
      // get value of object memeber 
      result:= O['last_name'].AsString;
    end;
    

    【讨论】:

    • 嗨,这可能很好地解决了问题......但如果你能编辑你的答案并提供一些关于它的工作原理和原因的解释会很好:)不要忘记 - 那里在 Stack Overflow 上是一堆新手,他们可以从你的专业知识中学到一两件事——对你来说显而易见的事情对他们来说可能不是。
    • 1.在uses语句中添加“superobject”,在选项搜索路径中添加“superojbect.pas”路径。 2. 使用 TSuperObject.ParseFile() 将 json 文件传输到 json 对象。 3. 通过句点访问器访问对象中的元素。
    • 不要在 cmets 中告诉我 - 请编辑您的答案并添加解释...它应该是您完整答案的一部分 ;)
    猜你喜欢
    • 2013-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 2015-06-14
    • 2021-08-14
    相关资源
    最近更新 更多