C# System.Text.Json自定义序列化/反序列化
我有以下课程:C# System.Text.Json自定义序列化/反序列化,c#,json,system.text.json,.net-standard-2.1,C#,Json,System.text.json,.net Standard 2.1,我有以下课程: public class PropoertyValue { string Id {get;set;} object Value {get;set;} string Type {get;set;} } 当我序列化/反序列化Json时,我希望value属性反映“type”属性中指定的类型。我该怎么做 此处示例: Json:{“Id”:“Property1”,“Value”:0,“Type”:“System.Int32”}//该类型必须由任何POCO对象类型指定 反序列化时,我
public class PropoertyValue {
string Id {get;set;}
object Value {get;set;}
string Type {get;set;}
}
当我序列化/反序列化Json时,我希望value属性反映“type”属性中指定的类型。我该怎么做
此处示例:
Json:{“Id”:“Property1”,“Value”:0,“Type”:“System.Int32”}
//该类型必须由任何POCO对象类型指定
反序列化时,我将调用返回值的PropertyValue类方法:
public getValue<T>() => (T)Value;
public getValue()=>(T)值;
有人能帮我序列化/反序列化PropertyValue类型吗?当JSON反序列化为类时,对象属性将转换为JsonElement。使用此扩展方法,您可以将JsonElement转换为所需的任何类型
public static T ToObject<T>(this JsonElement element)
{
if (element.ValueKind != JsonValueKind.Null)
return JsonSerializer.Deserialize<T>(element.GetRawText());
return default(T);
}
随后:
var model = new PropoertyValue();
model.Value = 0;
var jsonString = JsonSerializer.Serialize(model);
var data = JsonSerializer.Deserialize<DeserializeModel>(jsonString);
var yourObject = data.Value.ToObject<int>();
var模型=新的PropoertyValue();
模型值=0;
var jsonString=JsonSerializer.Serialize(model);
var data=JsonSerializer.Deserialize(jsonString);
var yourObject=data.Value.ToObject();
当JSON反序列化为类时,对象属性将转换为JsonElement。使用此扩展方法,您可以将JsonElement转换为所需的任何类型
public static T ToObject<T>(this JsonElement element)
{
if (element.ValueKind != JsonValueKind.Null)
return JsonSerializer.Deserialize<T>(element.GetRawText());
return default(T);
}
随后:
var model = new PropoertyValue();
model.Value = 0;
var jsonString = JsonSerializer.Serialize(model);
var data = JsonSerializer.Deserialize<DeserializeModel>(jsonString);
var yourObject = data.Value.ToObject<int>();
var模型=新的PropoertyValue();
模型值=0;
var jsonString=JsonSerializer.Serialize(model);
var data=JsonSerializer.Deserialize(jsonString);
var yourObject=data.Value.ToObject();
您可以参考本文并编写自己的转换器来处理类型
属性。这篇文章的答案也可能会有所帮助。您可以参考这篇文章并编写自己的转换器来处理类型
属性。这方面的答案也可能有帮助