C# JSON数组到C字典
如何转换这样的JSON数组C# JSON数组到C字典,c#,json,json.net,C#,Json,Json.net,如何转换这样的JSON数组 [{"myKey":"myValue"}, {"anotherKey":"anotherValue"}] 到带有json.net或系统类的C字典 json.net可以直接序列化到字典,但前提是向它提供一个对象,而不是数组。实际上非常简单: 假设您以字符串形式获取json,如下所示: string jsonString = @"[{"myKey":"myValue"}, {"anotherKey":"anotherValue"}]"; 然后可以使用JSON.NET对
[{"myKey":"myValue"},
{"anotherKey":"anotherValue"}]
到带有json.net或系统类的C字典
json.net可以直接序列化到字典,但前提是向它提供一个对象,而不是数组。实际上非常简单: 假设您以字符串形式获取json,如下所示:
string jsonString = @"[{"myKey":"myValue"},
{"anotherKey":"anotherValue"}]";
然后可以使用JSON.NET对其进行反序列化,如下所示:
JArray a = JArray.Parse(jsonString);
// dictionary hold the key-value pairs now
Dictionary<string, string> dict = new Dictionary<string, string>();
foreach (JObject o in a.Children<JObject>())
{
foreach (JProperty p in o.Properties())
{
string name = p.Name;
string value = (string)p.Value;
dict.Add(name,value);
}
}
也许转换为KeyValuePairs数组会有所帮助
using System.Linq;
var list = JsonConvert.DeserializeObject<IEnumerable<KeyValuePair<string, string>>>(jsonContent);
var dictionary = list.ToDictionary(x => x.Key, x => x.Value);
我发现使用KeyValuePairs列表不起作用。我得到了正确数量的元素,但它们有空键和值
最后,对我有效的唯一解决方案是反序列化到字典列表,每个字典都有一个kvp元素。必须按以下格式发送数据:
"Values": [
{"Key" : "abc" , "Value": 23.14},
{"Key" : "abc1" , "Value": 23.11},
{"Key" : "abc2" , "Value": 23.17},
{"Key" : "abc3" , "Value": 23.19}
]
因此,转换过程将起作用。在我尝试将JSON转换为dictionary的过程中,这对任何感兴趣的人来说都很有效-这也很有效: JSON示例: [{device_id:VC2,command:6,command_args:test args10}, {device_id:VC2,command:3,command_args:test args9}] C:
由于只能从对象进行反序列化,因此只需先稍微操纵JSON字符串即可。将其包装在对象中:
json = String.Format("{{\"result\":{0}}}", json);
可能的重复不是重复。我的JSON是一个数组。这是一个限制。@user1585345你是什么意思?我为没有正确阅读而道歉-我已经更新了代码!这真的对你有用吗?我得到了正确数量的KVP,但它们有空键和值。我认为这是因为Json.Net不能用Create方法构造它们。最后,我不得不使用一系列单元素词典。
json = String.Format("{{\"result\":{0}}}", json);