4
我正在編寫客戶端應用程序,它應該處理服務器響應。響應以JSON格式顯示。我決定使用Json.NET來反序列化它們。我無法簡化或修改這些響應(在服務器端)。此特定JSON響應的特殊困難是不同的對象類型在同一個數組中:散列和文件數組。所以,我想將這個數組直接反序列化爲強類型對象,而不是對象數組。我認爲應該可以用CustomCreationConverter
來實現,但我無法想象如何。Json.NET:將嵌套數組反序列化爲強類型對象
JSON:
{
"files":
[
"hash string",
[
["first file name", 12],
["second file name", 34]
]
]
}
對象結構,我想實現:
public class RootObject
{
[JsonProperty("files")]
public FilesContainer Container
{
get;
set;
}
}
public class FilesContainer
{
public string Hash
{
get;
set;
}
public File[] Files
{
get;
set;
}
}
[JsonConverter(typeof(FileJsonConverter))]
public class File
{
public string Name
{
get;
set;
}
public int Size
{
get;
set;
}
}
class FileJsonConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
throw new NotImplementedException();
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
File obj = new File
{
Name = reader.ReadAsString(),
Size = reader.ReadAsInt32().GetValueOrDefault()
};
reader.Read();
return obj;
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotImplementedException();
}
}