MVC将json存储为字符串存储

时间:2016-01-27 03:07:13

标签: javascript c# asp.net-mvc model-view-controller

我有一个模型对象

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>

3 个答案:

答案 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>

    }
 }