通过搜索ID从字符串数组中获取值

时间:2015-07-14 08:29:50

标签: c# .net string split substring

我有一个数组列表 Cmnts ,如

  

" 6_12_g2_text":":; 33"" 6_12_g4_text":" 22"" 6_12_g3_text&#34&# 34; 44"

var CmntsValue = forms["textvalue"];    
string[] Cmnts = CmntsValue.Split('{','}');

不,我想搜索6_12_g2_text并返回22(对于6_12_g3_text并返回33)。我怎样才能做到这一点?

我得到了如下图所示的值! Json values

我在此处插入更新的代码[在第二张图片中]。请检查一下 Not get all records properly

1 个答案:

答案 0 :(得分:4)

您拥有的值实际上是一个JSON字符串。使用Json.NET,您可以轻松地将字符串解析为Dictionary<string, int>,如下所示:

var json = "{\"6_12_g2_text\":\"22\",\"6_12_g3_text\":\"33\",\"6_12_g4_text\":\"44\"}";
var dictionary = JsonConvert.DeserializeObject<Dictionary<string, int>>(json);

然后按键提取任何值:

int value;
if (dictionary.TryGetValue("6_12_g2_text", out value))
{
    Console.WriteLine(value);
}

修改

在看到您的实际JSON字符串后,您将不得不做一些额外的工作:

var json = "{\"1_3_g1_text\":\"11\"}
            {\"1_3_g2_text\":\"\"}
            {\"6_12_g2_text\":\"test\"}
            {\"6_12_g3_text\":\"\"}
            {\"1_17_g1_text\":\"works\"}
            {\"5_19_g2_text\":\"submitted\"}
            {\"5_19_g3_text\":\"2\"}";

var jsons = json.Split('{', '}').Where(x => !string.IsNullOrWhiteSpace(x));
var concatenatedJson = string.Format("{{{0}}}", string.Join(",", jsons));

var intermidiateDict = JsonConvert.DeserializeObject<Dictionary<string, string>>(
                                                                      concatenatedJson);