迭代一个JSON数据,在每个运行和SerializeObject后面加上逗号

Iterate a JSON data, put comma after each run and SerializeObject

我正在尝试迭代(Do While)JSON数据输入,在每个[=32=之后放上逗号 ],然后 将 [ ] 放在末尾。

var query = new QueryFunction()
{
       Offset = 0,
       PageSize = 2
};
do
{
      query.Offset = offset;
      query.PageSize = pagesize;

      Task<OnlineResponse> task = client.Execute(query);
      OnlineResponse response = task.Result;
      Result result = response.Results[0];

      dynamic resultJson = JsonConvert.SerializeObject(result.Data);

      offset += pagesize;
      resultJsonString += resultJson;

      //remaining = result.NumRemaining;
      // Tried to put , after each loop
      //if (remaining == 0)
      //    resultJsonString += resultJson;
      //else
      //    resultJsonString += resultJson + ",";

} while (offset < 4);
return resultJsonString;     

因此,目前“resultJsonString”的输出是这样的,因为它迭代了两次:

如您所见,它在每个 运行 周围放置 [ ](每次 2 输出 ),每个 运行 后没有逗号。

"[{\"GLDETAIL\":{\"RECORDNO\":\"264378-1756289-919567\",\"BATCH_DATE\":\"02/01/2022\"}},
 {\"GLDETAIL\":{\"RECORDNO\":\"264378-1756290-919568-\",\"BATCH_DATE\":\"02/01/2022\"}}]
 [{\"GLDETAIL\":{\"RECORDNO\":\"264379-1756291-919569\",\"BATCH_DATE\":\"02/01/2022\"}},
 {\"GLDETAIL\":{\"RECORDNO\":\"264379-1756292-919570\",\"BATCH_DATE\":\"02/01/2022\"}}]"

预期的输出是这样的。

"[{\"GLDETAIL\":{\"RECORDNO\":\"264378-1756289-919567\",\"BATCH_DATE\":\"02/01/2022\"}},
 {\"GLDETAIL\":{\"RECORDNO\":\"264378-1756290-919568\",\"BATCH_DATE\":\"02/01/2022\"}},
 {\"GLDETAIL\":{\"RECORDNO\":\"264379-1756291-919569\",\"BATCH_DATE\":\"02/01/2022\"}},
 {\"GLDETAIL\":{\"RECORDNO\":\"264379-1756292-919570\",\"BATCH_DATE\":\"02/01/2022\"}}]"

不要手动附加 JSON 字符串。

相反,在 do-while 循环的迭代期间将对象添加到 array/list。

result.Datareturns一个数据数组,因此需要List.AddRange().

当循环退出时,序列化 array/list.

using System.Linq;

List<dynamic> resultList = new List<dynamic>();

do
{
    query.Offset = offset;
    query.PageSize = pagesize;

    Task<OnlineResponse> task = client.Execute(query);
    OnlineResponse response = task.Result;
    Result result = response.Results[0];

    offset += pagesize;
    resultList.AddRange(result.Data);

    ...

} while (offset < 4);

resultJsonString = JsonConvert.SerializeObject(resultList);

return resultJsonString;