首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当使用json.net序列化DataTable时,我的数据被弄乱了

当使用json.net序列化DataTable时,我的数据被弄乱了
EN

Stack Overflow用户
提问于 2014-03-10 18:40:42
回答 1查看 270关注 0票数 1

我使用json.net来序列化我的DataTable.我将这个json字符串(结果)传递给视图,以便在无序列表中呈现它。但是json格式在结果中被搞乱了。

DataAccess

代码语言:javascript
复制
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;
    }
}

控制器

代码语言:javascript
复制
public ActionResult Index()
{

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

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

视图

代码语言:javascript
复制
<ul>
    @foreach (var p in Model.tblClinic.clinic){
        <li>@p</li>
    }
</ul>

但我的数据被搞砸了:

代码语言:javascript
复制
[
{
"
c
o
d
e
"
:
0
,
"
n
a
m
e
"
:
"
A"
}
,
{
...
}

我希望是:

代码语言:javascript
复制
code: 0, name: A
code: 1, name: B

..。

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

更多信息:我的模型

代码语言:javascript
复制
public class QueryModel
{
    public Clinic tblClinic { get; set; }

}

我的领域

代码语言:javascript
复制
public class Clinic
{
    public string clinic { get; set; }
    public Clinic() {
        this.clinic = Data.getClinic();       
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-11 09:40:17

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

是的,很明显。您需要先对json对象进行反序列化,然后再循环。否则,循环遍历string只会在每一步产生一个char

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

代码语言:javascript
复制
public class RootObject // you have to set the class name
{
    public int code { get; set; }
    public string name { get; set; }
}

然后,在视图中,您可以循环如下:

代码语言:javascript
复制
<ul>
    @foreach (RootObject p in JsonConvert.DeserializeObject<List<RootObject>>(Model.tblClinic.clinic))
    {
        <li>code: @p.code, name: @p.name</li>
    }
</ul>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22308574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档