如果我有以下模型类
public class User
{
public string Name {get; set;}
public string UUID {get; set;}
}
以下 JSON 字符串将被正确转换
// JSON 1
{
"User": {
"Name": "Hello World",
"UUID": "000000-00000-00000"
}
}
在我的情况下,有时我有以下 JSON JSON 2
,User
JSON 属性表示UUID
值而不是用户模型对象
// JSON 2
{
"User": "000000-00000-00000"
}
我想将该User
类用作ASP.Net Core操作参数模型,这意味着我可能需要自定义JsonConverter
.
有没有办法将上面的JSON字符串转换为User
Class?
试试这个:
class UserJsonConverter : JsonConverter
{
public override bool CanConvert(Type objectType) => objectType == typeof(User);
public override bool CanWrite => false;
public override object ReadJson(JsonReader reader, Type objectType,
object existingValue, JsonSerializer serializer)
{
var token = JToken.ReadFrom(reader);
if (token.Type == JTokenType.Null)
{
return null;
}
var user = new User();
// Convert string
if (token.Type == JTokenType.String)
{
user.UUID = token.Value<string>();
}
// Convert object
else
{
serializer.Populate(token.CreateReader(), user);
}
return user;
}
public override void WriteJson(JsonWriter writer, object value,
JsonSerializer serializer)
{
}
}
这适用于:
[JsonConverter(typeof(UserJsonConverter))]
public class User
{
public string Name { get; set; }
public string UUID { get; set; }
}
var obj = JsonConvert.DeserializeObject<MyClass>(
@"{
""User"": {
""Name"": ""Hello World"",
""UUID"": ""000000-00000-00000""
}
}");
var obj2 = JsonConvert.DeserializeObject<MyClass>(
@"{
""User"": ""000000-00000-00000""
}");
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句