簡體   English   中英

如何在不知道密鑰的情況下從字典獲取價值?

[英]How to get value from dictionary without knowing key?

我想從字典中獲取價值但我不知道密鑰(因為動態從數據庫生成字典)如何獲得字典值。

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是動態密鑰,在它的價值標題之后我需要的所有價值

如果你沒有密鑰,但有價值並試圖抓住密鑰,你可以這樣做:

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

要獲取值與目標匹配的所有鍵/值對的序列:

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);

您發布的示例數據不是平鍵值字典。 它包含嵌入式字典 - 基本字典包含標題和行,而行又由高度和列組成,依此類推,在某些時候是鍵值對,令人困惑地稱為“值”。 您是否在詢問如何解析此數據結構以獲取其鍵值有效的所有value

您首先需要做的是,因為它似乎是一個JSON格式的條目,它使用JSON.NET或System.Web.Helpers.Json等庫將JSON解析為.NET數據結構。 這些庫將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偽代碼向您展示如何查看字典,然后可以選擇深入研究內部字典。

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();

如果沒有密鑰,怎么可能知道你需要哪個值?

.NET中的Dictionary確實包含KeysValues集合,因此如果您只對值感興趣,可以使用它。

暫無
暫無

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

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