如何在Delphi中创建一个没有名称的JSONArray?

时间:2018-03-05 12:49:31

标签: arrays json file delphi

我已经在互联网上搜索了几天,并且已经尝试了很多东西,但我还没有设法创建一个没有名字的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。

有人能指出我正确的方向吗?

米莎

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)

使用JsonDataObjects

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;