如何在 JSON 中创建数组?

How to create an array in JSON?

我怎样才能 post 这样的 HTTP 请求?我试着做这样的东西,但我不知道如何制作 [] 部分。感谢您的帮助!

{
  "ID": 1,
  "calls": [
    {
      "number": 702061966,
      "duration": "00:02:21",
      "date" : "2020-11-26 12:45:00"
    },
    {
      "number" : 123456789,
      "duration" : "00:15:48",
      "date" : "2020-11-27 08:23:00"
      },
      {
      "number" : 123456789,
      "duration" : "00:09:33",
      "date" : "2020-11-28 16:02:00"
    }
  ]
}

首先您需要一个结构来表示 C# 中的数据。对于给定的 JSON 这可能看起来像这样:

public record MyRequest(int ID, IEnumerable<MyItem> Calls);
public record MyItem(int Number, string Duration, string Date);

现在您创建请求

var req = new MyRequest(1, new List<MyItem> {
  new MyItem(702061966, "00:02:21", "2020-11-26 12:45:00"),
  ...
});

...然后发送

var response = await httpClient.PostAsJson("some/url", req);

代码示例旨在作为第一指导,未经测试。您可以在这里阅读更多相关信息:

I dont know how to make [] section

任何集合(IEnumerable<>List<>、...)都将序列化到 JSON 列表。

备注:

  • 代码示例使用 c# 9 功能
  • 您可能想要使用字符串以外的其他数据类型,例如DateTime