我已经在互联网上搜索了几天,并且已经尝试了很多东西,但我还没有设法创建一个没有名字的JSONArray。
通常,JSONArray看起来像这样:
"MyArray" [
//content
]
但我需要这个:
[
//content
]
我的JSON-File最终需要看起来像这样:
[
{
"videos":"Hello.MOV",
"render-status":"ready",
"output":"test\\out1.mov"
},
{
"videos":"123.MOV",
"render-status":"ready",
"output":"test\\out1.mov"
},
]
顺便说一句,我使用的是Delphi 10.2。
有人能指出我正确的方向吗?
米莎
答案 0 :(得分:1)
您也可以在Delphi中使用Stadard System.JSON对象。
uses
System.JSON;
function CreateArray: TJSONArray;
var
LTempObject: TJSONOBject;
begin
Result := TJSONArray.Create;
LTempObject := TJSONOBject.Create;
LTempObject.AddPair('videos', 'Hello.MOV');
LTempObject.AddPair('render-status', 'ready');
LTempObject.AddPair('output', 'test\out1.mov');
Result.AddElement(LTempObject);
LTempObject := TJSONOBject.Create;
LTempObject.AddPair('videos', '123.MOV');
LTempObject.AddPair('render-status', 'ready');
LTempObject.AddPair('output', 'test\out1.mov');
Result.AddElement(LTempObject);
end;
使用像这样:
var
LJSON: TJSONArray;
begin
LJSON := CreateArray;
//Will give you exact string as above
//without and formatting
memo.Text := LJSON.ToJSON;
end;
答案 1 :(得分:0)
uses
JsonDataObjects;
const
JSON_ARRAY =
'[{"videos":"Hello.MOV","render-status":"ready","output":"test\\out1.mov"},{"videos":"123.MOV","render-status":"ready","output":"test\\out1.mov"}]';
procedure TJsonTests.BuildArrayTest;
var
A: TJsonArray;
O: TJsonObject;
V: string;
begin
A := TJsonArray.Create;
try
O := A.AddObject;
O.S['videos'] := 'Hello.MOV';
O.S['render-status'] := 'ready';
O.S['output'] := 'test\out1.mov';
O := A.AddObject;
O.S['videos'] := '123.MOV';
O.S['render-status'] := 'ready';
O.S['output'] := 'test\out1.mov';
CheckEquals(2, A.Count);
V:= A.ToJSON();
CheckEquals(JSON_ARRAY, V);
finally
A.Free;
end;
end;
procedure TJsonTests.ParseArrayTest;
var
A: TJsonArray;
V: string;
begin
A := TJsonArray.Create;
try
A.FromUtf8JSON(JSON_ARRAY);
CheckEquals(2, A.Count);
V:= A.ToJSON();
CheckEquals(JSON_ARRAY, V);
finally
A.Free;
end;
end;