从JSON字符串获取键值对

时间:2018-12-24 07:10:05

标签: c# json windows

我有一个JSON字符串

{
  [
    "EnrityList": "Attribute",
    "KeyName": "AkeyName",
    "Value": "Avalue"
  ],
  [
    "EnrityList": "BusinessKey",
    "KeyName": "AkeyName",
    "Value": "Avalue"
  ]
}

我已经序列化并得到了一个对象数组。 谁能帮助我从这些对象数组中获取键值对。

3 个答案:

答案 0 :(得分:0)

您可以使用Newtonsoft.Json中的JsonConvert将json反序列化为Dictionary。

Dictionary<string, object> values = 
    JsonConvert.DeserializeObject<Dictionary<string, object>>(jsonstring);

答案 1 :(得分:0)

首先使用以下命令将上述字符串转换为正确的json格式:

G

这将使字符串

str=str.Replace('[', '{');
str=str.Replace(']', '}');
//replace first occurance of {
int startPos = str.IndexOf('{');
str=str.Substring(0,startPos)+" ["+str.Substring(startPos + 1);
//replace last occurance of }
int endPos = str.LastIndexOf('}');
str=str.Substring(0,endPos)+"]";

现在,由于您获得了json字符串,因此可以轻松使用它。
  我们可以使用

给出的方法

How can I deserialize JSON to a simple Dictionary<string,string> in ASP.NET?

str = [{"EnrityList":"Attribute","KeyName":"AkeyName","Value":"Avalue"}, {"EnrityList":"BusinessKey","KeyName":"AkeyName","Value":"Avalue"} ]   

答案 2 :(得分:-1)

以您的示例为例,您正在尝试接收某种类型的元素的列表, 因此,首先,您将需要一个类来表示您的数据类型。

class MyType
{    
  string  EnrityList;
  string  KeyName;
  string  Value;    
}

然后使用DesrializeObject方法将其存储在变量中

var values = JsonConvert.DeserializeObject<List<MyType>>(jsonstring);