迭代一个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.Data
returns一个数据数组,因此需要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;
我正在尝试迭代(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.Data
returns一个数据数组,因此需要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;