2011-12-01 38 views
0

我對C#編程有點新,並且在使用.net 4.0的字典時遇到問題。C#.net 4.從字典對象中的子組提取數據的幫助

我已經通過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();那樣簡單地提取信息,但是如何從女兒級別提取所需的信息?

我能夠創造JSON.net周圍的工作得到這個通過檢查的數據類型,然後將它,如果它某型內擺弄下跌一點點的工作,但是這是加重和我一直老闆告誡不要使用JSON.net。

回答

1

沒有嘗試過,我想嘗試類似:(dict["location"] as Dictionary<string,object>)["name"],因爲我從JSON想你已經提供了,女兒們自己再次被反序列化爲Dictionary s。

無論如何,調試器將在這裏幫助你很多。如果在調用反序列化之後在行上設置斷點,則可以檢查字典(將鼠標指向該字典並等待一秒),然後查看您的結構現在如何存儲在C#對象中。

+0

這很好。謝謝 – user1075718

0

我會嘗試創建一個類,它會用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; } 
} 
0

您是否嘗試過使用dict["location"]["name"]

我認爲女兒水平只是視爲存儲在父彼此字典...

+0

由於反序列化器反序列化爲一個'Dictionary ',這可能不起作用,因爲可能需要先從'object'到'Dictionary '強制轉換才能訪問該鍵在兒童層面。 –

+0

啊是的。優秀點。 :) +1給你。 ;-) – Chris