gpt4 book ai didi

json - 使用 StringReplace 从 JSON 响应中删除不需要的字符的替代方法

转载 作者:行者123 更新时间:2023-12-03 15:30:35 25 4
gpt4 key购买 nike

我正在开发一个小项目,该项目需要我解析 JSON 文件并将结果放入数据库中。我正在使用 SuperOjbect 解析文件并生成结果,但我遇到了一些障碍,需要一些帮助。

这是我需要解析的 JSON 文件的示例。实际上,这些文件包含的信息比这更多,但这只是为了向您提供我正在处理的数据类型的示例。

{
"id" : 1,
"object" : "value",
"colors" : ["red", "green", "blue"],
}

这是我用来解析文件一部分(在本例中为数组)的代码示例。

var
jo : ISuperObject;
begin
jo := TSuperObject.ParseFile('response.txt', TRUE);
ShowMessage(jo['colors'].AsString);
end;

这会产生一个如下所示的字符串:["red", "blue", "green"],然后我使用 StringReplace 函数删除所有 []"字符,所以我留下了一个现在看起来像这样的红色、绿色、蓝色的字符串,这工作正常,但我正在寻找一种更适合此方法的替代方法类似的事情,而不是依赖 StringReplace 函数,如果我需要解析的 JSON 文件更复杂,这可能会导致不可预见的问题。有什么想法吗?

最佳答案

由于您知道 colors 是一个数组,并且数组总是用括号进行字符串化,因此只需使用 Copy() 删除括号即可。至于删除 " 字符。您有几个选择:

  1. 使用StringReplace(),就像您已经知道的那样:

    var
    jo : ISuperObject;
    s: string;
    begin
    jo := TSuperObject.ParseFile('response.txt', TRUE);
    s := jo['colors'].AsString;
    s := Copy(s, 2, Length(s)-2);
    s := StringReplace(s, '"', '', [rfReplaceAll]);
    ShowMessage(s);
    end;
  2. 使用TStringList。它的默认 QuoteChar",因此它可以使用其 CommaText 属性为您解析出引用的值:

    var
    jo : ISuperObject;
    sl: TStringList;
    s: string;
    begin
    jo := TSuperObject.ParseFile('response.txt', TRUE);
    s := jo['colors'].AsString;
    sl := TStringList.Create;
    try
    sl.CommaText := Copy(s, 2, Length(s)-2);
    s := sl.CommaText;
    finally
    sl.Free;
    end;
    ShowMessage(s);
    end;

或者,根本不要对整个数组进行字符串化。遍历数组提取您需要的各个值:

var
jo : ISuperObject;
arr: ISuperObject;
sl: TStringList;
i: Integer;
s: string;
begin
jo := TSuperObject.ParseFile('response.txt', TRUE);
arr := jo['colors'].AsArray;
sl := TStringList.Create;
try
for i := 0 to arr.Length-1 do
sl.Add(arr.S[i]);
s := sl.CommaText;
finally
sl.Free;
end;
ShowMessage(s);
end;

关于json - 使用 StringReplace 从 JSON 响应中删除不需要的字符的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24749385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com