【问题标题】:Getting nested data out of JSON in C#在 C# 中从 JSON 中获取嵌套数据
【发布时间】:2011-03-18 09:30:03
【问题描述】:

我有一些带有两个对象的 JSON,每个对象都嵌套了 3 个对象。

{ "FirstPerson": { "number": "101", "a10": "1001", "a20": "1002" }, "SecondPerson": { "number": "102", "a10": "2001", "a20": "2001" } }

在 c# asp.net mvc2 中,我已经能够使用 Hashtable 获得“FirstPerson”或“SecondPerson”,但是当我知道“FirstPerson”时如何获得“number”或“a10”?

例如对象内的对象。

Hashtable 是最好的用途还是我应该使用其他东西?

提前致谢。

【问题讨论】:

    标签: c# asp.net-mvc json asp.net-mvc-2


    【解决方案1】:

    我发现你的问题的解决方案可能是解决这个问题的线索

    想要将 C# 对象转换成它的 JSON 等价物?下面是 System.Web.Script 命名空间中的一个简单对象,正是这样做的:

    System.Web.Script.Serialization.JavaScriptSerializer 。它存储在 System.Web.Extentions DLL 中(仅限 .Net Framework 3.5)

    使用这个对象,我们在 C# 中序列化和反序列化对象。这是一个简单的示例:

    一个简单的 Employee 对象:

    public class Employee
    {
        public string Name { get; set; }
        public string Age { get; set; }
        public string ID { get; set; }   
    }
    

    将它们的一些实例添加到列表中:

    员工oEmployee1 =

       new Employee{Name="Pini",ID="111", Age="30"};
    

    员工oEmployee2 =

      new Employee { Name = "Yaniv", ID = "Cohen", Age = "31" };
    

    员工oEmployee3 =

        new Employee { Name = "Yoni", ID = "Biton", Age = "20" };
    

    列表 oList = new List()

    { oEmployee1, oEmployee2, oEmployee3 };
    

    然后序列化:

    System.Web.Script.Serialization.JavaScriptSerializer oSerializer = 新 System.Web.Script.Serialization.JavaScriptSerializer(); 字符串 sJSON = oSerializer.Serialize(oList);

    这是输出:

    [{"Name":"Pini","Age":"30","ID":"111"},
    
    {"Name":"Yaniv","Age":"31","ID":"Cohen"},
    
    {"Name":"Yoni","Age":"20","ID":"Biton"}]
    

    链接http://blogs.microsoft.co.il/blogs/pini_dayan/archive/2009/03/12/convert-objects-to-json-in-c-using-javascriptserializer.aspx

    供您参考

    【讨论】:

    【解决方案2】:

    我使用 JsonConvert 取得了不错的效果。知道如何处理集合似乎做得很好。只需定义您想要反序列化的类并使用它。

    http://james.newtonking.com/projects/json-net.aspx

    例子:

    MyCollection col = JsonConvert.DeserializeObject<MyCollection>(this.HttpContext.Request.Params[0]);

    其中 MyCollection 是一个类,其中包含一个集合,在您的情况下,是人。

    【讨论】:

      【解决方案3】:

      您可以将 JSON 对象分配给动态变量并以这种方式访问​​属性(尽管仅在 C# 4.0 中)

      dynamic jsonData = jsonObject;
      int workflowNum = jsonData.SecondPerson[0].workflow;
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多