简体   繁体   English

JavaScriptSerializer()。Serialize(实体框架对象)

[英]JavaScriptSerializer().Serialize(Entity Framework object)

May be, it is not so problematic for you. 可能是的,这对您来说没有太大问题。 but i'm trying first time with json serialization. 但是我正在尝试第一次使用json序列化。 and also read other articles in stackowerflow. 并阅读stackowerflow中的其他文章。

I have created Entity Framework data model. 我已经创建了实体框架数据模型。 then by method get all data from object: 然后通过方法从对象获取所有数据:

private uqsEntities _db = new uqsEntities();
//get all data from table sysMainTableColumns where tableName=paramtableName
public List<sysMainTableColumns> getDataAboutMainTable(string tableName)
{
     return (from column in _db.sysMainTableColumns
                    where column.TableName==tableName
                    select column).ToList();

}

my webservice: 我的网络服务:

public string getDataAboutMainTable()
{
    penta.DAC.Tables dictTable = new penta.DAC.Tables();
    var result = dictTable.getDataAboutMainTable("1");
    return new JavaScriptSerializer().Serialize(result);
}

and jQuery ajax method 和jQuery ajax方法

$('#loadData').click(function() {
            $.ajax({
                type: "POST",
                url: "WS/ConstructorWS.asmx/getDataAboutMainTable",
                data: "{}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(msg) {
                    $("#jsonResponse").html(msg);

                    var data = eval("(" + msg + ")");
                    //do something with data
                },
                error: function(msg) {

                }
            });
        });

Fails (from fairbug): 失败(来自Fairbug):

missing ] after element list [Break on this error] var data = eval("(" + msg + ")");

ajax Response (by Firebug if I remove var data = eval("(" + msg + ")") ): ajax响应(如果我删除var data = eval("(" + msg + ")")则由Firebug发出):

{"d":"[{\"ID\":1,\"TableName\":\"1\",\"Name\":\"d\",\"FullName\":\"f\",\"Type\":\"nvarchar(50)\",\"MeasurementUnit\":\"t         \",\"EntityState\":2,\"EntityKey\":{\"EntitySetName\":\"sysMainTableColumns\",\"EntityContainerName\":\"uqsEntities\",\"EntityKeyValues\":[{\"Key\":\"ID\",\"Value\":1}],\"IsTemporary\":false}},{\"ID\":2,\"TableName\":\"1\",\"Name\":\"e\",\"FullName\":\"e\",\"Type\":\"int\",\"MeasurementUnit\":\"r         \",\"EntityState\":2,\"EntityKey\":{\"EntitySetName\":\"sysMainTableColumns\",\"EntityContainerName\":\"uqsEntities\",\"EntityKeyValues\":[{\"Key\":\"ID\",\"Value\":2}],\"IsTemporary\":false}}]"}

problem with data , code fails there. 数据问题,代码在那里失败。 and i think i'm not use JavaScriptSerializer().Serialize() method very well. 而且我认为我没有很好地使用JavaScriptSerializer()。Serialize()方法。

Please, tell me, what a big mistake I made in C# code? 请告诉我,我在C#代码中犯了什么大错误?

  1. You don't need eval . 您不需要eval jQuery does that for you when you specify dataType: "json" 当您指定dataType: "json"时,jQuery会为您完成此操作
  2. It's a bad idea to serialize entities directly as JavaScriptSerializer will die if one happens to contain a circular reference. 直接序列化实体是一个坏主意,因为如果一个JavaScriptSerializer碰巧包含循环引用,它将死掉。
  3. Don't forget the d ! 不要忘记d That's inserted by WCF services to work around a security hole in some browsers when the root object is an array. 当根对象是数组时,WCF服务会插入该文件以解决某些浏览器中的安全漏洞。

您是否尝试过使用Firebug或Fiddler进行调试以查看JSON内容是什么样的?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 JavaScriptSerializer序列化C#中的嵌套对象 - JavaScriptSerializer Serialize for Nested Object in c# 如何使用SoapFormatter序列化Entity Framework对象? - How to serialize Entity Framework object with SoapFormatter? 如何在 C# 中使用 JavascriptSerializer 序列化嵌套实体(模型)? - How to serialize a nested entity (model) with JavascriptSerializer in C#? MVC 控制器使用 Json(object) 编码 JSON 与 JavaScriptSerializer().Serialize(object) - MVC controller encoding JSON with Json(object) vs JavaScriptSerializer().Serialize(object) 序列化和反序列化字典 <int, object> 使用JavaScriptSerializer和自定义JavaScriptConverter - Serialize and deserialize Dictionary<int, object> using JavaScriptSerializer and a custom JavaScriptConverter json.net; 序列化实体框架对象(循环引用错误) - json.net; serialize entity framework object (circular reference error) 使用Entity Framework是否可以将对象属性从字符串中反序列化到字符串? - Is it possible with Entity Framework to (de)serialize an object property from/to to string? JavaScriptSerializer()。Serialize:PascalCase到CamelCase - JavaScriptSerializer().Serialize : PascalCase to CamelCase 如何使用JavaScriptSerializer序列化日期 - How to serialize dates with JavaScriptSerializer 序列化具有子集合的实体框架实体 - Serialize an Entity Framework Entity that has child Collections
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM