簡體   English   中英

如何從對象中的詞典訪問值?

[英]How do I access values from a Dictionary in an object?

好吧,我不確定是否要問正確的問題,但是可以。 我正在使用Javascript .NET解析Javascript對象數組。 我的代碼如下所示:

object packlist;
using (var context = new JavascriptContext())
{
    context.Run(@"function packlist() { this.packs = new Array(); }
                var packlist = new packlist();
                packlist.packs[0] = { item1:""something"", item2:""something2"", item3:""something3"" };
                packlist.packs[1] = { item1:""something"", item2:""something2"", item3:""something3"" };
                packlist.packs[2] = { item1:""something"", item2:""something2"", item3:""something3"" };");
    packlist = context.GetParameter("packlist");
}

調試時,“本地”窗口顯示對象看起來像這樣 這個 我的問題是如何從packlist.packs[0]訪問item1

您的packlist變量是帶有單個鍵的Dictionary,其值是一個對象數組,並且該數組中的每個條目也是一個Dictionary。 因此,獲得價值將像這樣。

Dictionary<string,object> dicPacklist =(Dictionary<string,object>) packlist;
object[] packs = (object[])dicPacklist["packs"];
Dictionary<string,object> dicPackOne = (Dictionary<string,object>)packs[0];
object item1Value = dicPackOne["item1"]; //"something"

總體結構如下:

PackList => Dictionary of <string, Dictionary<string,object>[]>

意思是它是一個字典,其中每個值都是字典的字典。

應該

object[] arr = packlist["packs"] as object[]; 
Dictionary<string, object> dictPack = arr[0] as Dictionary<string, object>;
object item1 = dictPack["item1"];

要么

object packs;
if (packlist.TryGetValue("packs",out packs)) { 
     object[] arr = packs as object[]; 
     Dictionary<string, object> dictPack = arr[0] as Dictionary<string, object>;
     object item1 = dictPack["item1"];
}

它們之間的區別是,在第一個中,假定鍵存在於字典中,否則會引發異常。 在第二個中,它將嘗試獲取值並告訴您密鑰是否有效。

要檢查關鍵字是否在字典中,可以使用以下命令:

bool exists = packlist.ContainsKey("item1");

要遍歷字典中的所有項目

foreach KeyPairValue<string,object> kp in packlist
{
    string key =  kp.Key;
    object value = kp.Value;
}

這是字典類的MSDN鏈接

http://msdn.microsoft.com/fr-fr/library/bb347013.aspx

我覺得是這樣的:

var a = packlist.packs [0] [“ item1”];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM