1

わかりました、正しい質問をしているかどうかわかりませんが、ここに行きます。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");
}

デバッグ中に、[ローカル] ウィンドウに、オブジェクトが次のように表示 されると表示されますこれitem1packlist.packs[0]

4

3 に答える 3

4

packlist変数は、単一のキーを持つディクショナリであり、値はオブジェクト配列であり、その配列内のすべてのエントリもディクショナリです。したがって、値を取得すると、次のようになります。

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"
于 2012-05-28T22:22:07.703 に答える
3

一般的な構造は次のとおりです。

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"];
}

それらの違いは、最初の場合、キーがディクショナリに存在すると見なされ、それ以外の場合は例外がスローされることです。2 番目に、値を取得しようとし、キーが有効かどうかを通知します。

キーが辞書にあるかどうかを確認するには、これを使用できます。

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

于 2012-05-28T22:08:12.553 に答える
0

それはそうですね:

var a = packlist.packs[0]["item1"];

于 2012-05-28T22:09:50.623 に答える