我知道这个问题已经被问生厌,但现有的答案都没有特别有帮助我。最好的是Deserialize JSON into C# dynamic object?,但我不想创建一个对象,我想创建一个Dictionary。反序列化JSON在C#
序列化我的数据像这样,我要反序列化精确相同的数据结构:
public static string AugDictToJSON(Dictionary<string, List<Dictionary<string, object>>> dict)
{
return string.Join(",", dict.Select(
d => string.Format("{{ \"{0}\" : [ {1} ] }}", d.Key,
string.Join(",", d.Value.Select(i => SubAugDictToJSON(i)).ToArray())
)).ToArray());
}
public static string SubAugDictToJSON(Dictionary<string, object> dict)
{
return string.Join(",", dict.Select(
d => string.Format("{{ \"{0}\" : \"{1}\" }}", d.Key, d.Value.ToString())
).ToArray());
}
编辑:解决方法是以下(从接受的答案):
public static Dictionary<string, List<Dictionary<string, object>>> JSONToAugDict(string json)
{
return JsonConvert.DeserializeObject<Dictionary<string, List<Dictionary<string, object>>>>(json);
}
如果您正在使用V4.5,['JsonValue.Parse()'](http://msdn.microsoft.com/en-us/library/system.json.jsonvalue.parse.aspx)或其兄弟姐妹可能已经足够接近。 (这里不是4.5,所以我不能真正测试代码。) – millimoose
顺便说一下,你的序列化代码是不正确的。 JSON不允许未加引号的字符串作为键。 – millimoose
'我想知道是否有更优雅的方式。使用linq并不会让你的方式更加优雅。 –