我有一个类型和一个JSON字符串,可以开箱即用地序列化为这种类型:
public class MyVar
{
public string Content { get; set; }
public string Type { get; set; }
}
public class TypeA
{
public string Name { get; set; }
public Dictionary<string, MyVar> Vars { get; set; }
}
是否可以将相同的JSON字符串反序列化为包装字典的自定义类型?
public class MyVars
{
private IDictionary<string, MyVar> _vars;
public MyVar this[string key]
{
get { ... }
set { ... }
}
...
}
public class TypeA
{
public string Name { get; set; }
public MyVars Vars { get; set; }
}
答案 0 :(得分:0)
您可以使用Jobject执行此操作,使用Jobject提取值并将其设置为您想要的属性。 例如,我有一个Jobject jo
var name jo.GetValue("Name ").ToString();
您可以遍历Jobject并提取并设置值到您的自定义模型。
答案 1 :(得分:0)
找到它。我必须使用JsonConverter属性。
[JsonConverter(typeof(MyVarsConverter))]
public MyVars Vars { get; set; }
转换器的实现必须从字典转换为MyVars实例:
public class MyVarsConverter : JsonConverter
{
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
var dictionary = serializer.Deserialize<Dictionary<string, MyVar>>(reader);
var myVars = new MyVars(dictionary);
return myVars;
}
...
}