multiple JsonProperty Name assigned to single property

后端 未结 2 1616
悲哀的现实
悲哀的现实 2020-12-09 01:22

I have two format of JSON which I want to Deserialize to one class. I know we can\'t apply two [JsonProperty] attribute to one property.

Can you please

2条回答
  •  鱼传尺愫
    2020-12-09 01:45

    Tricking custom JsonConverter worked for me. Thanks @khaled4vokalz, @Khanh TO

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            object instance = objectType.GetConstructor(Type.EmptyTypes).Invoke(null);
            PropertyInfo[] props = objectType.GetProperties();
    
            JObject jo = JObject.Load(reader);
            foreach (JProperty jp in jo.Properties())
            {
                if (string.Equals(jp.Name, "name1", StringComparison.OrdinalIgnoreCase) || string.Equals(jp.Name, "name2", StringComparison.OrdinalIgnoreCase))
                {
                    PropertyInfo prop = props.FirstOrDefault(pi =>
                    pi.CanWrite && string.Equals(pi.Name, "CodeModel", StringComparison.OrdinalIgnoreCase));
    
                    if (prop != null)
                        prop.SetValue(instance, jp.Value.ToObject(prop.PropertyType, serializer));
                }
            }
    
            return instance;
        }
    

提交回复
热议问题