首先,我一直在搜索,但找不到答案。 我从在线Rest Api获取数据,该数据采用Json格式。 我正在尝试制作搜索应用,但无法在列表中搜索。
我如何在List中搜索?
我的POCO课程:
public class rootObject
{
public List<Product> products { get; set; }
}
public class Product
{
public string id { get; set; }
public string alias { get; set; }
public string title { get; set; }
}
API类:
public static string makeApiCall(string requestUrl)
{
var syncClient = new WebClient();
var content = syncClient.DownloadString(requestUrl);
Trace.WriteLine(content.ToString());
return content;
}
public static Product GetByISBN(string isbn)
{
string requestUrl = string.Format(baseUrl + isbn);
var resultString = RestClient.makeApiCall(requestUrl);
var product = JsonConvert.DeserializeObject<Product>(resultString);
return product;
}
控制器:
[HttpGet]
public ActionResult Index()
{
List<Product> model = new List<Product>();
return View(model);
}
[HttpPost]
public ActionResult Index(SearchViewModel VM)
{
var search = VM.searchValue.Trim();
var searchValues = search.Replace(Environment.NewLine, ",").Split(',');
List<Product> model = new List<Product>();
foreach (var p in searchValues)
{
model = ApiCalls.GetByISBN(p).products;
}
return View(model);
}
我的观点:
@model IEnumerable<Saxo.Web.Models.Product>
@{
Html.RenderAction("Search");
}
<h1>Produkter</h1>
@ViewBag.Arr
@if (Model != null)
{
foreach (var m in Model)
{
<p>@m.alias</p>
}
}
我尝试过不同的方法,如:
var product = JsonConvert.DeserializeObject<List<Product>>(resultString);
我只得到最后一个对象。它没有在List中堆叠。 希望你们能帮忙。
JSON:
{
"products":[
{
"id":"3042442",
"alias":"marte-meo-i-praksis_pernille-roug_haeftet_9788741201122",
}
]
}
答案 0 :(得分:0)
您发布的json与rootObject
而非Product
匹配,因此您必须使用rootObject
进行反序列化:
var root = JsonConvert.DeserializeObject<rootObject>(resultString);
这会将json反序列化为rootObject
的实例,该实例将List<Product>
属性中包含所有产品。