我已将JSON响应反序列化为一个对象。什么是下一个步骤?我有一个WebAPI控制器,我目前正在使用我的JSON对象。我需要获取这些数据并将其移动到视图中,以便我可以将其连接到我的Web组件。
我想我是否应该在控制器或视图中迭代我的JSON对象?我有以下内容:
var model = JsonConvert.DeserializeObject<MyData.RootObject>(Data);
foreach (var record in Data.rows)
{
foreach (var nestedRecord in record.f)
{
List<string> list = new List<string>();
list.Add(nestedRecord.v);
}
}
return View();
此外,我正在迭代这个模型,我无法在视图中返回模型,因为它超出了范围。
答案 0 :(得分:3)
我在这里看到两个流行的选项,具体取决于您可能从反序列化对象访问的信息量。一,使用MyData.RootObject
作为模型,并在视图中迭代它。如果您需要访问对象的其他属性,这将为您提供最大的灵活性:
var model = JsonConvert.DeserializeObject<MyData.RootObject>(Data);
return View(model);
在视图中(此无序列表标记只是一个示例),您可能有:
@model MyData.RootObject
<ul>
@foreach (var record in Model.rows)
{
foreach (var nestedRecord in record.f)
{
<li>@nestedRecord.v</li>
}
}
</ul>
或者,按照您的计划继续,但使用列表作为模型移动您在for循环之外填充的列表。就在视图中渲染对象而言,这将是最不灵活的:
var rootObject = JsonConvert.DeserializeObject<MyData.RootObject>(Data);
List<string> list = new List<string>();
foreach (var record in rootObject.rows)
{
foreach (var nestedRecord in record.f)
{
list.Add(nestedRecord.v);
}
}
return View(list);
在这种情况下您的观点(比其他选项更简洁):
@model System.Collections.Generic.List<string>
<ul>
@foreach (var record in Model)
{
<li>@record</li>
}
</ul>