c# - 返回多个 Json 响应
问题描述
我已经构建了这个 API,它从 Google Place API 返回 JSON 响应以将其存储/保存到数据库中,并且因为这个代码示例显示它是 PlaceId 列表,所以我编写了一个 For 循环来循环每个 PlaceId,然后将它们全部返回到下一点是将它们发布到数据库中,
public class portal_teilnehmerController : ControllerBase
{
private readonly _0046696KContext _context;
private const string apiKey = @"apiKey";
private const string fields = "&fields=address_component,rating,reviews,user_ratings_total,website";
WebRequest request;
WebResponse response;
Stream data;
StreamReader reader;
private Task<string> responseFromServer;
private string[] JsonResponses = { };
public portal_teilnehmerController(_0046696KContext context)
{
_context = context;
}
[HttpGet]
[Produces("application/json")]
public async Task<JsonResult> Getportal_teilnehmerByPlaceId()
{
var PlaceId = await _context.portal_teilnehmer.Select(x => x.PlaceId).ToListAsync();
if (PlaceId == null)
{
throw new InvalidOperationException("This Portal ID not found, please be assure of your portal ID");
}
for (int i = 0; i < PlaceId.Count(); i++)
{
string url = @"https://maps.googleapis.com/maps/api/place/details/json?place_id=" + (PlaceId[i]) + (fields) + (apiKey);
request = WebRequest.Create(url);
response = await request.GetResponseAsync();
data = response.GetResponseStream();
reader = new StreamReader(data);
string timeStamp = GetTimestamp(DateTime.Now);
responseFromServer = reader.ReadToEndAsync();
}
return new JsonResult(await responseFromServer);
}
但是当我测试时会发生什么,它只是返回 For 循环的最后一个 PlaceId 响应。关于如何将它们全部返回到数组并保存它们的任何想法?
解决方案
关于如何将它们全部返回到数组并保存它们的任何想法?
使用列表可能更容易:
var responsesFromServer = new List<string>();
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
for (int i = 0; i < PlaceId.Count(); i++)
{
string url = @"https://maps.googleapis.com/maps/api/place/details/json?place_id=" + (PlaceId[i]) + (fields) + (apiKey);
request = WebRequest.Create(url);
response = await request.GetResponseAsync();
data = response.GetResponseStream();
reader = new StreamReader(data);
string timeStamp = GetTimestamp(DateTime.Now);
responsesFromServer.Add(await reader.ReadToEndAsync());
// ^ ^^^^^^^^^^ ^
}
return new JsonResult(responsesFromServer);
// ^
用插入符号下划线的新位 ^
但是我想你可以使用一个数组。毕竟你知道你要下载多少个地方。
var responsesFromServer = new string[PlaceId.Count()];
for (int i = 0; i < PlaceId.Count(); i++)
{
...
responsesFromServer[i] = await reader.ReadToEndAsync();
}
return new JsonResult(responsesFromServer);
推荐阅读
- python - 无法使用 python Tkinter
- python - 如何区分 lambda 和 def 函数?
- javascript - 通过不一致的数据解析地址
- linux - 使用 repo“repo.ius.io”安装 php56 后,在亚马逊 linux2 上 yum 更新失败
- tensorflow - TensorFlow 如何知道如何计算导数?
- service - ExecCondition 不会阻止服务的启动
- c++ - 使用另一个向量和映射函数进行高效的 std::vector 初始化
- go - 使用 GoLand 为 GO 编译 gRPC .proto 文件后缺少导入
- python - TinyMCE - 正确显示文本 - Django
- python - 如果似乎有多个索引,我可以获得索引的值吗?