equal () и equalsIgnoreCase () возвращают false для одинаковых строк

Мне нравится придерживаться атрибутов на этом, вот тот метод, который я использую, когда вам нужно десериализовать свойство, но не сериализуйте его или наоборот.

ШАГ 1 - Создайте пользовательский атрибут

public class JsonIgnoreSerializationAttribute : Attribute { }

ШАГ 2 - Создайте пользовательское соглашение об отказе

class JsonPropertiesResolver : DefaultContractResolver
{
    protected override List<MemberInfo> GetSerializableMembers(Type objectType)
    {
        //Return properties that do NOT have the JsonIgnoreSerializationAttribute
        return objectType.GetProperties()
                         .Where(pi => !Attribute.IsDefined(pi, typeof(JsonIgnoreSerializationAttribute)))
                         .ToList<MemberInfo>();
    }
}

ШАГ 3 - добавьте атрибут, в котором сериализация не требуется, но десериализация -

    [JsonIgnoreSerialization]
    public string Prop1 { get; set; } //Will be skipped when serialized

    [JsonIgnoreSerialization]
    public string Prop2 { get; set; } //Also will be skipped when serialized

    public string Prop3 { get; set; } //Will not be skipped when serialized

ШАГ 4 - Используйте его

var sweet = JsonConvert.SerializeObject(myObj, new JsonSerializerSettings { ContractResolver = new JsonPropertiesResolver() });

Надеюсь, это поможет! Также стоит отметить, что это также игнорирует свойства, когда происходит Deserialization, когда я занимаюсь сортировкой, я просто использую конвертер обычным способом.

JsonConvert.DeserializeObject<MyType>(myString);
13
задан Paul T. 20 September 2012 в 13:35
поделиться