我有一个模型对象
model.ToDoList = { "completed": false, "taskId": "in01", "memberName": "JD", "dueDate": "Mon Apr 25 16:09:18 EDT 2016" }, { "completed": false, "taskId": "in02", "memberName": "JD", "dueDate": "Mon Apr 25 16:09:18 EDT 2016" }, { "completed": false, "taskId": "in16", "memberName": "JD", "dueDate": "Wed Apr 20 16:09:18 EDT 2016" } ]
这是一个存储为字符串的json对象。如何将字符串转换为视图中的对象?我试图遍历那个ojbect并在屏幕上显示
@model Gallant.Models.Enrollment
<table class="table">
<tr>
<th>Completed</th>
<th>Description</th>
<th>Member</th>
<th>Due Date</th>
<th>Upload Document</th>
</tr>
</table>
<div class="form-group">
<div class="col-md-10">
@Html.DisplayFor(model => Model.ToDoList)
</div>
</div>
答案 0 :(得分:0)
您可以使用Json.NET将其反序列化为类实例或匿名对象。以下是如何为匿名类型执行此操作,定义要反序列化的属性:
var result = new[]{ new { Completed = false, TaskId = "", MemberName = "", DueDate = "" } };
result = JsonConvert.DeserializeAnonymousType(model.TodoList, result);
或者您自己的自定义类:
var result = JsonConvert.DeserializeObject<List<MyClass>>(model.TodoList);
看起来它更适合在视图之外进行解析。
答案 1 :(得分:0)
首先,您应该阅读有关NewtonJson的内容并从她http://www.newtonsoft.com/json下载。
其次,您应该创建一个包含JSON中所有字段的类。喜欢这个
public class ListItem
{
public bool Completed { get; set; }
public string TaskId { get; set; }
}
然后在你的Enrollment课程中你应该做这样的事情
public class Enrolment
{
public IEnumerable<ListItem> ToDoList{ get; private set; }
public void ApplyJSON(string json)
{
//Magic :)
YourList = JsonConvert.DeserializeObject<IEnumerable<ListItem>>(json);
}
}
最后,替换你的行
model.ToDoList = { "completed": false, "taskId": "in01",...}
with model.ApplyJson(&#34; {&#34;已完成&#34;:false,&#34; taskId&#34;:&#34; in01&#34;,...}&#34; )
因此,在@ Html.DisplayFor(model =&gt; Model.ToDoList)中,您将拥有ListItem项目列表,您可以执行所需的一切。
答案 2 :(得分:0)
显示json的方法之一如下:
在您的视图中,只需使用Newtonsoft.Json反序列化json并迭代它。
@{
var json= "{ 'completed': false, 'taskId': 'in01'}" ;
Dictionary<string, string> jsonObject = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, string>>(json);
foreach(var item in jsonObject){
<div>
<label>@item.Key : </label>
<span>@item.Value</span>
</div>
}
}