当前位置: 首页 > 面试题库 >

SuperObject-全部提取

寿毅庵
2023-03-14
问题内容

如何从 通用JSON 获取 所有“ id”成员值不知道它的结构 。因为它非常复杂并且它有很多子对象。它必须遍历所有子对象。

对于那些不断询问示例JSON在哪里的人来说。 我的问题是关于如何从具有该成员内部的任何通用JSON中提取成员值“ id”的成员值


问题答案:

如果您不知道从某处接收到的JSON的结构,请务必注意JSON是“简单”的复合模式,您可以像其他任何复合结构一样遍历它。以下示例以JSON文本形式遍历完整结构,并打印任何名为“
id”的成员的路径。

procedure ParseJSON;
var
  JSONText: string;
  JSON: ISuperObject;
begin
  // Retrieve JSON as a string into JSONText variable any way you like.
  JSON := SO(JSONText);
  ProcessObject(JSON.AsObject);
end;

procedure ProcessObject(const aAsObject: TSuperTableString; const aPrefix: string = '');
var
  Names: ISuperObject;
  Name: string;
  Items: ISuperObject;
  Item: ISuperObject;
  idx: Integer;
  Value: string;
  ArrayItem: ISuperObject;
begin
  if Assigned(aAsObject) then
  begin
    Names := aAsObject.GetNames;
    Items := aAsObject.GetValues;

    for idx := 0 to Items.AsArray.Length - 1 do
    begin
      Name := Names.AsArray[idx].AsString;
      Item := Items.AsArray[idx];
      if Item.DataType = stObject then
        Value := '<Object>'
      else if Item.DataType = stArray then
        Value := '<Array>'
      else
        Value := Item.AsString;

      if SameText(Name, 'id') then
        WriteLn(Format('%s: %s', [aPrefix + Name, Value]));

      if Item.DataType = stArray then
        for ArrayItem in Item do
          ProcessObject(ArrayItem.AsObject, aPrefix + Name + '.');

      if Item.DataType = stObject then
        ProcessObject(Item.AsObject, aPrefix + Name + '.');
    end;
  end;
end;


 类似资料:
  • SuperObject 是开源的 Delphi 的 JSON 工具包,可生成 JSON 数据以及进行 JSON 解析。

  • 问题内容: 我正在寻找一种使用findAll来获取两个标签的方式,按照它们在页面上出现的顺序。 目前我有: 如果我在仅带有’em’或’strong’的页面上使用该标签,则它将获得所有这些标签,如果我在同时使用这两个标签的页面上将获得’strong’标签。 有没有办法做到这一点?我主要关心的是保留标签的查找顺序。 问题答案: 您可以传递一个list,以找到任何给定的标签:

  • Kafka0.8作品伟大。我能够使用CLI以及编写我自己的生产者/消费者! 正在检查动物园管理员。。。我还看到了为0.8成功创建的所有主题和分区。 Kafka0.7不起作用! 为什么是Kafka0.7?我使用Kafka喷口从Storm这是为Kafka0.7。 首先,我只想为Kafka 0.7运行基于CLI的producer/consumer,我无法做到这一点。我将执行以下步骤: > 宾/Kafka

  • Display global messages as feedback in response to user operations. Normal prompt Normal message for information. <w class="button-container"> <button ref="open-normal-message" class="btn btn-primar

  • 问题内容: 如何使小部件全屏显示?我已经尝试过这样的事情: 但是小部件并未覆盖系统面板。还有其他想法吗? 操作系统:Linux 问题答案: 就是您所需要的-在我的项目中的Linux + Windows上可以很好地工作多年- 但请注意,不应两次调用该函数(例如,先调用of ,然后调用)。 乔,克里斯

  • 全部来源 关键参数 报告 method metrics(指标, 数据单位) 其他参数 全部来源 source/all/a pv_count (浏览量(PV)) pv_ratio (浏览量占比,%) visit_count (访问次数) visitor_count (访客数(UV)) new_visitor_count (新访客数) new_visitor_ratio (新访客比率,%) ip_co