【问题标题】:What is the simple way to extract a JSON string from a Microsoft DynamicJsonObject?从 Microsoft DynamicJsonObject 中提取 JSON 字符串的简单方法是什么?
【发布时间】:2012-03-11 15:18:16
【问题描述】:

在使用 Microsoft 命名空间 System.Web.HelpersSystem.Web.Script.Serialization 时,我预计 Microsoft 序列化程序可以很好地与 Microsoft 的动态 JSON 对象配合使用。事实证明,这是一个幼稚的假设。 JavaScriptSerializer 将对象序列化为“{}”。对于这个看似微不足道的任务,推荐的方法是什么?

     dynamic obj = new DynamicJsonObject(new Dictionary<string,object>());
     obj.FirstName = "Henry";
     obj.LastName = "Ford";
     JavaScriptSerializer jsc = new JavaScriptSerializer();
     string str = jsc.Serialize( obj );
     Assert.AreNotEqual(str, "{}"); // Does not fail

【问题讨论】:

    标签: c# javascript json


    【解决方案1】:

    试试Json.Net

    dynamic obj = new DynamicJsonObject(new Dictionary<string,object>());
    obj.FirstName = "Henry";
    obj.LastName = "Ford";
    string str = JsonConvert.SerializeObject(obj);
    

    它会成功的。您可以将它与匿名类一起使用

    string s = JsonConvert.SerializeObject(new {FirstName="Henry",LastName="Ford"});
    

    还有ExpandoObjects

    dynamic obj = new ExpandoObject();
    obj.FirstName = "Henry";
    obj.LastName = "Ford";
    string s = JsonConvert.SerializeObject(obj);
    

    也可以反序列化为动态对象

    dynamic obj2 = JsonConvert.DeserializeObject(@"{""FirstName"":""Henry"",""LastName"":""Ford""}");
    Console.WriteLine(obj2.FirstName + " " + obj2.LastName);
    

    【讨论】:

    • Json.Net 是否提供了 DynamicJsonObject 的替代方案,或者我应该使用 System.Web.Helpers 实现吗?我对在 System.Web 下找到的东西印象不深
    • 我会在确定 Microsoft 部件损坏(或视情况而定)时将其标记为已回答。
    • @JackWester,我不确定我是否理解您的问题,因为您不需要 DynamicJsonObject 来处理动态对象。我更新了答案,显示如何为此目的使用ExpandoObject – L.B 11 分钟前
    • @LB,我认为 DynamicJsonObject 会提供 Json 功能。 System 命名空间中其他类生成的 Javascript Object Notation (Json) 不会为 DynamicJsonObject 生成 Json。所以你是对的,我不需要它。实际上,我认为这些新课程是倾倒在用户身上,而不是经过仔细审查。我会远离这些命名空间。
    猜你喜欢
    • 1970-01-01
    • 2011-05-20
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 2016-12-03
    相关资源
    最近更新 更多