gpt4 book ai didi

javascript - 使用 JavaScript 解析 Datasnap 结果

转载 作者:行者123 更新时间:2023-11-30 05:36:05 24 4
gpt4 key购买 nike

我正在尝试将数据列表从 Delphi 返回到列表框,但我认为我没有掌握它们如何组合在一起的基本原理。

answer使用本地定义的数据集为我提供了一个工作示例。

我现在遇到的问题是我的 Delphi 代码返回的 JSON 对象的结构。

在上面的答案中,对象中只有 1“层”数据:

resultJSON = '{"1":"Firm 1","2":"Firm 2","3":"Firm 3"}';

但是我的 Delphi 代码似乎增加了一层。查询如下:

function TServerMethods1.GetFirms(jobnumb: string): TJSONObject;
var
jso: TJSONObject;
begin
jso := TJSONObject.Create();
GetJobFirmList(jobnumb);
with SQLQuery1 do
while not Eof do
begin
jso.AddPair(TJSONPair.Create(FieldByName('firmref').AsString,
FieldByName('firmnaem').AsString));
Next;
end;
Result := jso;
end;

这将返回以下结果格式:

 {"result":[{"1":"Firm 1","2":"Firm 2","3":"Firm 3"}]}

我要么需要减少方括号外的代码,要么了解如何更好地迭代关卡。

answer here展示了如何解析相似结构中的两层,但我能想到的最好的将两者集成的方法是以下失败的方法:

function getJobFirms()
{
var sel = $("#FirmList");
sel.empty();
var resultJSON = '{"result":[{"1":"Firm 1","2":"Firm 2","3":"Firm 3"}]}';
var result = $.parseJSON(resultJSON);
$.each(result, function() {
$.each(result.result, function(k,v) {
var opt = document.createElement('option');
opt.value = k;
opt.text = v;
sel.append(opt);
});
});
}

最佳答案

正如您所说,您似乎在错误地迭代 JSON 结构。也就是说,result.result 是一个数组,因此您可以尝试这样的操作:

function getJobFirms()
{
var sel = $("#FirmList");
sel.empty();
var resultJSON = '{"result":[{"1":"Firm 1","2":"Firm 2","3":"Firm 3"}]}';
var result = $.parseJSON(resultJSON);
$.each(result.result, function(i, resultItem) {
$.each(resultItem, function(k, v) {
var opt = document.createElement('option');
opt.value = k;
opt.text = v;
sel.append(opt);
});
});
}

此外,如果 result.result 数组中只有一个元素,则可以进一步减少代码:

function getJobFirms()
{
var sel = $("#FirmList");
sel.empty();
var resultJSON = '{"result":[{"1":"Firm 1","2":"Firm 2","3":"Firm 3"}]}';
var result = $.parseJSON(resultJSON);
$.each(result.result[0], function(k, v) {
var opt = document.createElement('option');
opt.value = k;
opt.text = v;
sel.append(opt);
});
}

关于javascript - 使用 JavaScript 解析 Datasnap 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23740779/

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