C# 如何按列引用JSON对象元素

C# 如何按列引用JSON对象元素,c#,json,object,serialization,C#,Json,Object,Serialization,我正在从web上的示例中收集一些代码,这些代码获取一行数据(从SP返回的行),并使用JSON对象序列化程序将其发送回客户端aspx javascript页面。为了让您了解数据是如何构建的 public static string GetLogEntry(DataTable table, string id) { JavaScriptSerializer jss = new JavaScriptSerializer(); List<Dictio

我正在从web上的示例中收集一些代码,这些代码获取一行数据(从SP返回的行),并使用JSON对象序列化程序将其发送回客户端aspx javascript页面。为了让您了解数据是如何构建的

    public static string GetLogEntry(DataTable table, string id)
    {
        JavaScriptSerializer jss = new JavaScriptSerializer();
        List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
        Dictionary<string, object> row;

       foreach (DataRow dr in table.Select("UID =" + id))
       // foreach (DataRow dr in table.Rows)
        {
            row = new Dictionary<string, object>();
            foreach (DataColumn col in table.Columns)
            {
                row.Add(col.ColumnName, dr[col]);
            }
            rows.Add(row);
        }
       var json = jss.Serialize(rows);
       return json;
所以我想做的是通过列名访问元素,就像我在其他示例中看到的那样

alert(json.columnName) //returns undefine.

提前感谢您的时间。

根据ajax调用的方式,success处理程序中的变量
json
已经是javascript对象文本

function successHandler(resp){
    var data = resp;

    $.each(data, function (index, row){
        var key;
        foreach (key in row){
            if (row.hasOwnProperty(key)){
                console.log(key, row[key]);
            }
        }
    });
}

$.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    url: "some url",
    data: "{}",
    dataType: "json"
}).done(successHandler);
如果您可以将服务器返回的数据发布,这将非常有帮助。这将使我们了解
json
的结构

因此,不需要使用
eval
或解析服务器响应

顺便说一句,世界上根本就没有所谓的。JSON只是一种序列化和传递javascript对象文本的格式。以下:

var data = new List<Dictionary<string, object>> 
           {
                new Dictionary<string, object>
                {
                    { "Col1", 1.0}, { "Col2", 2.0}
                },
                new Dictionary<string, object>
                {
                    { "Col1", 1.1}, { "Col2", 2.2}
                },
           };

jQueryAjax将自动解析这个字符串,并将结果数组传递给成功处理程序。为了实现这一点,需要告诉jquery期望
json
数据,服务器需要返回一个带有mimetype
application/json的字符串;charset=utf-8

在这一信息丰富的响应中投入了大量精力。正如@Amith所说,我不需要使用
eval
。在
var obj=jQuery.parseJSON(json)行之后我能够像这样获得所需的数据:
警报(obj[0].columnName)
。和
警报(json.columnName)
返回未定义。更多详细信息:json数据以以下格式返回:
[{\'columnName\':variable,\'columnName\':variable}]“
var data = new List<Dictionary<string, object>> 
           {
                new Dictionary<string, object>
                {
                    { "Col1", 1.0}, { "Col2", 2.0}
                },
                new Dictionary<string, object>
                {
                    { "Col1", 1.1}, { "Col2", 2.2}
                },
           };
"[{\"Col1\":1,\"Col2\":2},{\"Col1\":1.1,\"Col2\":2.2}]"