繁体   English   中英

C#.net 4.帮助从字典对象的子组中提取数据

[英]C# .net 4. Help on extracting data from a daughter group in dictionary object

我是C#编程的新手,使用.net 4.0字典时遇到麻烦。

我已通过JavaScriptSerializer将JSON对象发送到Dictionary<string, object>对象,该对象在提取所有数据时效果很好。

JSON链

{ 
    "name" : "MrMonkey", 
    "type" : "monkey", 
    "location" : { 
        "id" : "125235",
        "name" : "zoo" 
    }, 
    "owner" : { 
        "id" : "4211", 
        "name" : "Biggles" 
    }
}

在创建的这个字典对象中,我有一个子级别,用于存储需要从字典中提取并存储在其他位置的信息。 说我要提取的是位置名称。 如您所见,它还与父级和另一个子级共享一个键名。

对于父级,我可以像contact.name = dict["name"].ToString();一样简单地提取信息contact.name = dict["name"].ToString(); 但是我将如何从子级中提取所需的信息?

我可以在JSON.net中创建解决方案,通过检查数据类型然后在数据属于某种类型时将其转换,从而使它工作起来有些麻烦,但这很麻烦,老板告诉我不要使用JSON.net。

不用尝试,我可以尝试: (dict["location"] as Dictionary<string,object>)["name"] ,就像我从您提供的JSON假定的那样,女儿本身就是再次反序列化为Dictionary

无论如何,调试器将在这里为您提供很多帮助。 如果在反序列化调用之后的行上设置了一个断点,则可以检查字典(将鼠标指向该字典并等待一秒钟),然后查看结构现在如何存储在C#对象中。

我会尝试创建一个用json结果填充它的类。 然后正常工作,如果需要,可以再次序列化为json。

public class MyObject
{
  public string name { get;set; }
  public string type { get;set; }
  public Location location { get;set; }
  public Owner owner { get;set; }
}

public class Location
{
  public int id { get;set; }
  public string name { get;set; }
}

public class Owner
{
  public int id { get;set; }
  public string name { get;set; }
}

您是否尝试使用dict["location"]["name"]

我假设子级只是被视为父级中存储的另一本词典...

暂无
暂无

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM