如何将JSON响应保存到数组中



我有三个url,我循环并尝试从中获取结果。url是基本的,比如:

http://foo.bar/id/2563
http://foo.bar/id/1453
http://foo.bar/id/7321

我的foreach看起来像这样:

foreach (var url in urls){
HttpResponseMessage response = client.GetAsync(url).Result;
response.EnsureSuccessStatusCode();
body = await response.Content.ReadAsStringAsync();
result = JsonConvert.DeserializeObject<JsonData>(body);
}

是这样的,每个JSON都有

[{
id: 1,
name: John,
Address: {
zipcode: '',
town: ''
}
}]

我的想法是显示每个JSON的所有Address.zipcodeAddress.town

由于某些原因,我的网页只显示第一个url的数据,而不显示第二个和第三个url的数据

这是我的模型:

public class JsonData {
public int id { get; set; }
public string name { get; set; }
public Dictionary<string, string> Address{ get; set; }
}

这只是我写的一个代码,因为代码很好,但我不知道为什么我只看到一个邮编和一个城镇。

似乎在foreach循环中,只有一个数据被保存result,而我试图保存所有的数据。

我的HTML是基本的,看起来像这样:
@foreach(var item in result) {
<p> @item.Address.zipcode - <small>@item.Address.town</small> <p>
}

由于缺乏信息,实际上得不到你想要的东西。但是你可以推送反序列化的结果。

//Create an empty array of type JsonData
JsonData[] results = Array.Empty<JsonData>();
foreach (var url in urls)
{
HttpResponseMessage response = client.GetAsync(url).Result;
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();

//Push each deserialized response into the results array
Array.Resize(ref results, results.Length + 1);
results[results.GetUpperBound(0)] = JsonSerializer.Deserialize<JsonData>(body);
}

然后可以遍历结果数组。

相关内容

  • 没有找到相关文章

最新更新