【发布时间】:2014-06-28 11:57:56
【问题描述】:
我已经为此苦苦挣扎了一段时间,而做一些简单的事情似乎花费的时间太长了。
我有一个这样的文件:
[
{
"FirstName": "Oleg",
"Surname": "Buckley"
},
{
"FirstName": "Amery",
"Surname": "Mcmillan"
},
{
"FirstName": "Denton",
"Surname": "Burnett"
....
我希望能够将它们读入我的程序。到目前为止,我已经完成了这个非常小的功能:
function GetGeneratedNames: TArray<string>;
var fileName: TFileName;
JSONValue, jv: TJSONValue;
JSONArray: TJSONArray;
jo: TJSONObject;
pair: TJSONPair;
begin
result := nil;
filename := ExePath + 'Names.json';
JSONValue := TJSONObject.ParseJSONValue(TEncoding.ASCII.GetBytes(TFile.ReadAllText(filename)), 0);
if JSONValue is TJSONArray then begin
for jv in (JSONValue as TJSONArray) do begin
if jv is TJSONObject then begin
jo := jv as TJSONObject;
for pair in jo do begin
Append(result, jo.Value);
end;
end;
end;
end;
end{ GetGeneratedNames};
问题是,它返回一个空白字符串数组。谁能指出我正确的方向?
TIA 标记
【问题讨论】:
-
尝试改用
SuperObject- 整个世界都更轻松。 -
SuperObject就像O.AsArray[jv].S['FirstName']和O.AsArray[jv].S['Surname']一样简单 -
你能说得更具体一点吗?超级对象是什么意思?我在 Embardcadero 源中找不到它。
-
那是因为它不是 Embarcadero 源的一部分,它是一个第三方库
标签: json delphi delphi-xe4