2014-03-19 139 views
2

我想從字典中獲得價值,但我不知道密鑰(因爲動態生成數據庫字典)我如何獲得字典值。如何在不知道密鑰的情況下從字典中獲得價值?

If you some idea share me ... 

比如我的數據庫字符串值,像

string jsonString = " "FB": "[{\"title\":\"sheet1\",\"rows\":[{\"height\":\"undefined\",\"columns\":[{\"value\":\"Cover Group \"},{\"value\":\"Sample Variable\"},{\"value\":\"Coverpoint Name\"},{\"value\":\"Crossed cover points\"},{\"value\":\"Coverpoint Comment\"},{\"value\":\"Bin Type\"},{\"value\":\"Bin Id\"},{\"value\":\"Sample Value\"},{\"value\":\"Expected Bin Count\"},{\"value\":\"Set Max Bin\"},{\"value\":\"Not Used\"}]},{\"height\":\"undefined\",\"columns\":[{\"value\":\"allCg,allSi\"},{\"value\":\"exSingle\"},{\"value\":\"exSingle\"},{},{\"value\":\"Example for single bin\"},{\"value\":\"single\"},{\"value\":\"valZero\"},{\"value\":\"1'b0\"},{\"formula\":\"1\",\"value\":1},{},{}]},{\"height\":\"undefined\",\"columns\":[{},{},{},{},{},{\"value\":\"single\"},{\"value\":\"valOne\"},{\"value\":\"1'b1\"},{\"formula\":\"1\",\"value\":1},{},{}]},{\"height\":\"undefined\",\"columns\":[{},{\"value\":\"ex1Bus[3:0]\"},{\"value\":\"exMulti\"},{},{\"value\":\"Example for multibin\"},{\"value\":\"multi\"},{},{\"value\":\"[0:15]\"},{\"formula\":\"16\",\"value\":16},{},{}]},{\"height\":\"undefined\",\"columns\":[{},{},{\"value\":\"exCross\"},{\"value\":\"exSingle,exMulti\"},{\"value\":\"Example for cross\"},{\"value\":\"Implicit\"},{},{},{\"formula\":\"32\",\"value\":32},{},{}]},{\"height\":\"undefined\",\"columns\":[{},{\"value\":\"ex2Bus[15:0]\"},{\"value\":\"exWildcard\"},{},{\"value\":\"example for wildcard\"},{\"value\":\"wildcard\"},{\"value\":\"ex_wildcard\"},{\"value\":\"16'bxxxxxxxxxxxxxx1\"},{\"formula\":\"1\",\"value\":1},{},{}]},{\"height\":\"undefined\",\"columns\":[{},{\"value\":\"ex3Bus[4:0]\"},{\"value\":\"exImplicit\"},{},{\"value\":\"example for implicit & set max bin\"},{\"value\":\"Implicit\"},{},{},{\"formula\":\"8\",\"value\":8},{\"formula\":\"8\",\"value\":8},{}]},{\"height\":\"undefined\",\"columns\":[{},{\"value\":\"ex4Bus[3:0]\"},{\"value\":\"ex4Bus\"},{},{\"value\":\"setup for ignore example\"},{\"value\":\"multi\"},{},{\"value\":\"[0:15]\"},{\"formula\":\"16\",\"value\":16},{},{}]},{\"height\":\"undefined\",\"columns\":[{},{},{\"value\":\"exIgnore\"},{\"value\":\"exSingle,ex4Bus\"},{\"value\":\"example for ignore\"},{\"value\":\"ignore\"},{},{\"value\":\"ex4Bus([12:15])\"},{\"formula\":\"24\",\"value\":24},{},{}]},{\"height\":\"undefined\",\"columns\":[{},{\"value\":\"ex5Bus[3:0]\"},{\"value\":\"exIllegal\"},{},{\"value\":\"example for illegal\"},{\"value\":\"illegal\"},{},{\"value\":\"[12:15]\"},{\"formula\":\"16\",\"value\":16},{},{}]},{\"height\":\"undefined\",\"columns\":[{},{},{},{},{},{},{},{},{},{},{}]},{\"height\":\"undefined\",\"columns\":[{},{},{},{},{},{},{},{},{},{},{}]},{\"height\":\"undefined\",\"columns\":[{},{},{},{},{},{},{},{},{},{},{}]},{\"height\":\"undefined\",\"columns\":[{},{},{},{},{},{},{},{},{},{},{}]},{\"height\":\"undefined\",\"columns\":[{},{},{},{},{},{},{},{},{},{},{}]}],\"metadata\":{\"widths\":[\"200\",\"200\",\"200\",\"200\",\"200\",\"200\",\"200\",\"200\",\"200\",\"200\",\"200\"],\"frozenAt\":{\"row\":0,\"col\":0}}}]"" 

FB是動態的關鍵,它的價值冠軍之後,所有的價值,我需要

+0

如果你知道這個值或其中的一部分,你可以搜索'Values'屬性或者枚舉出''KeyValuePairs''。 –

+0

您發佈的示例數據不是平面鍵值字典。它包含嵌入式字典 - 基本字典包含一個'title'和一個'rows',它們又由'height'和'columns'等組成。你在問如何解析這個數據結構? –

回答

1
This code use for get value from dictionary value without knowing key and value.. 

var json = Newtonsoft.Json.JsonConvert.SerializeObject(jsonString); 
var javSer = new JavaScriptSerializer(); 
var dfi = javSer.Deserialize<Dictionary<string, string>>(json); 
string dataString= dfi.Values.First(); 
-1

你怎麼可能知道你需要的,如果值你沒有鑰匙?

NET中的Dictionary確實包含KeysValues集合,所以如果您只對值感興趣,則可以使用該值。

1

如果你沒有鑰匙,但具有的價值,並試圖拿到鑰匙的保持,你可以這樣做:

Dictionary<string, string> testData = new Dictionary<string, string>(); 
testData.Add("name", "Latheesan"); 
testData.Add("age", "26"); 

KeyValuePair<string, string> searchResult 
    = testData.FirstOrDefault(s => s.Value == "Latheesan"); 

string key = searchResult.Key; // returns "name" here 
1

要得到所有的鍵/值對其中的序列該值與目標值相匹配:

var dict = new Dictionary<string, int> 
{ 
    {"One", 1}, 
    {"Two", 2}, 
    {"Another One", 1}, 
    {"Three", 3}, 
    {"Yet Another One", 1} 
}; 

int target = 1; // For example. 
var matches = dict.Where(item => item.Value == target); 

foreach (var kvp in matches) 
    Console.WriteLine("Key = " + kvp.Key); 
1

您發佈的示例數據不是平面鍵值字典。它包含嵌入式字典 - 基本字典包含一個標題和一個行,而該行又由高度和列等組成,並且在某些時刻是鍵值對,這些鍵的名稱是「值」,容易混淆。你問如何解析這個數據結構來獲得關鍵是value的所有值?

您首先需要做什麼,因爲這似乎是一個JSON格式的條目,將JSON解析爲.NET數據結構,使用類似JSON.NET或System.Web.Helpers.Json的庫。這些庫將JSON字符串轉換成詞典的層次結構,所有的人都實現IEnumerable的,所以你可以迭代它,或多或少像這樣的(這是編譯代碼,只是一個示範!):

public void Main() 
{ 
    var jsonObject = Json.Decode(FB); // FB is your JSON string. 
    var values = new List<string>(); 
    FindValues(jsonObject); 
} 

public void FindValues(jsonObject, values) 
{ 
    foreach (var child in jsonObject) 
    { 
      if (child.key == 'value') 
      { 
       values.Add(child.value); 
      } 

      // Recursively call FindValues on child objects. 
      FindValues(child, values); 
    } 
} 

此C#-ish僞代碼顯示如何查看字典,然後可以深入查看內部字典。

相關問題