我有三个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.zipcode
和Address.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
,而我试图保存所有的数据。
@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);
}
然后可以遍历结果数组。