多个JsonProperty名称分配给单个属性我有两种格式的JSON,我想反序列化到一个类中。我知道我们不能将两个[JsonProperty]属性应用于一个属性。你能告诉我实现这一目标的方法吗?stringjson1=@"{'field1':'123456789012345','specifications':{'name1':'HFE'}}";stringjson2=@"{'field1':'123456789012345','specifications':{'name2':'HFE'}}";公共类规范{[JsonProperty("name1")]publicstringCodeModel{get;放;}}publicclassClassToDeserialize{[JsonProperty("field1")]publicstringVin{get;放;}[JsonProperty("specification")]publicSpecificationsSpecifications{get;放;我希望将name1和name2反序列化为规范类的name1属性。一个简单的解决方案,不需要转换器:只需向您的类添加第二个私有属性,用[JsonProperty("name2")]标记它,然后让它设置第一个属性:publicclassSpecifications{[JsonProperty("name1")]公共字符串CodeModel{得到;放;}[JsonProperty("name2")]privatestringCodeModel2{set{CodeModel=value;Fiddle:https://dotnetfiddle.net/z3KJj5从DefiningJsonConverter欺骗为我工作。谢谢@khaled4vokalz,@KhanhTO以上是C#学习教程:多个JsonProperty名称赋值给一个属性,共享全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多加关注——Type.EmptyTypes).Invoke(null);PropertyInfo[]props=objectType.GetProperties();JObjectjo=JObject.Load(阅读器);foreach(JPropertyjpinjo.Properties()){if(string.Equals(jp.Name,"name1",StringComparison.OrdinalIgnoreCase)||string.Equals(jp.Name,"name2",StringComparison.OrdinalIgnoreCase)){PropertyInfoprop=props.FirstOrDefault(pi=>pi.CanWrite&&string.Equals(pi.Name,"CodeModel",StringComparison.OrdinalIgnoreCase));if(prop!=null)prop.SetValue(instance,jp.Value.ToObject(prop.PropertyType,serializer));}}返回实例;}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
