我的数据是混乱的,当使用json.net序列化数据表



我正在使用json.net序列化我的数据表。我将这个json字符串(结果)传递给视图,以在无序列表中呈现它。但是json格式在result

中乱了

DataAccess

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();       
    }
}

我需要在循环之前先反序列化json对象吗?

是的,很明显。在循环之前,您需要先反序列化json对象。否则,循环string只会在每一步产生一个char

类中的反序列化可能类似于:

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

然后在View中,你可以像下面这样循环:

<ul>
    @foreach (RootObject p in JsonConvert.DeserializeObject<List<RootObject>>(Model.tblClinic.clinic))
    {
        <li>code: @p.code, name: @p.name</li>
    }
</ul>

最新更新