您可以通过JSON属性名称将
"files"对象建模为
Dictionary键控:
public class RootObject{ public Dictionary<string, PathData> files { get; set; }}public class PathData{ public int size { get; set; } public string data { get; set; } public string data2 { get; set; }}然后, 仅当您使用.Net 4.5或更高版本时
,才可以使用进行反序列化
DataContractJsonSerializer,但是必须首先设置
DataContractJsonSerializerSettings.UseSimpleDictionaryFormat= true:
var settings = new DataContractJsonSerializerSettings { UseSimpleDictionaryFormat = true }; var root = DataContractJsonSerializerHelper.GetObject<RootObject>(jsonString, settings);使用辅助方法:
public static class DataContractJsonSerializerHelper{ public static T GetObject<T>(string json, DataContractJsonSerializer serializer = null) { using (var stream = GenerateStreamFromString(json)) { var obj = (serializer ?? new DataContractJsonSerializer(typeof(T))).ReadObject(stream); return (T)obj; } } public static T GetObject<T>(string json, DataContractJsonSerializerSettings settings) { return GetObject<T>(json, new DataContractJsonSerializer(typeof(T), settings)); } private static MemoryStream GenerateStreamFromString(string value) { return new MemoryStream(Encoding.Unipre.GetBytes(value ?? "")); }}或者,您可以安装Json.NET并执行以下操作:
var root = JsonConvert.DeserializeObject<RootObject>(jsonString);
Json.NET会自动将字典序列化为JSON对象,而无需更改设置。



