我有一个数组列表 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)。我怎样才能做到这一点?
我得到了如下图所示的值!
我在此处插入更新的代码[在第二张图片中]。请检查一下
答案 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);