[asp.net-mvc]我的数据是使用 json.net 序列化数据表时搞砸了

发布时间: 2016/9/29 23:52:33
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我使用 json.net 来序列化我的数据表。我通过此 json 字符串 (结果) 到要呈现 unorder 列表中的视图。但 json 格式结果搞砸了

数据访问

public static string getClinic()
{
    string sproc = "getClinic";
    return callProcedure(sproc);
}

public static string callProcedure(string sproc)
{
    DataTable ds = null;

    try
    {
        using (SqlConnection sqlConn = new SqlConnection(sqlConnString))
        {
            SqlCommand cmd = new SqlCommand(sproc, sqlConn);
            cmd.CommandType = CommandType.StoredProcedure;
            sqlConn.Open();

            SqlDataAdapter adapter = new SqlDataAdapter(cmd);

            ds = new DataTable();
            adapter.Fill(ds);

            string json = JsonConvert.SerializeObject(ds);
            return json;
        }
    }
    catch (Exception ex)
    {
        throw ex;
    }
}

控制器

public ActionResult Index()
{

    QueryModel qModel = new QueryModel {
        tblClinic = new Clinic(),

    };
    return View("Index", qModel);
}

视图

<ul>
    @foreach (var p in Model.tblClinic.clinic){
        <li>@p</li>
    }
</ul>

但是我的数据搞砸了像这样︰

[
{
"
c
o
d
e
"
:
0
,
"
n
a
m
e
"
:
"
A"
}
,
{
...
}

预计︰

code: 0, name: A
code: 1, name: B

...

我需要反序列化 json 对象第一次前循环吗?

详细信息︰ 我的模型

public class QueryModel
{
    public Clinic tblClinic { get; set; }

}

我的域名

public class Clinic
{
    public string clinic { get; set; }
    public Clinic() {
        this.clinic = Data.getClinic();       
    }
}

解决方法 1:

我需要反序列化 json 对象第一次前循环吗?

是的很明显。你需要反序列化 json 对象第一次在循环之前。否则,循环通过 string 将只生产 char 的每一步。

在类中的反序列化可能会有点类似︰

public class RootObject // you have to set the class name
{
    public int code { get; set; }
    public string name { get; set; }
}

然后在视图,您可以依次像下面︰

<ul>
    @foreach (RootObject p in JsonConvert.DeserializeObject<List<RootObject>>(Model.tblClinic.clinic))
    {
        <li>code: @p.code, name: @p.name</li>
    }
</ul>
官方微信
官方QQ群
31647020