DeSerialize JSON в C # объект: как обрабатывать отсутствующие свойства

1

У меня проблема, мой объект JSON не содержит всех свойств, доступных в объекте С# (DataMember).

Есть ли способ игнорировать недостающие свойства при десериализации JSON

/// <summary>
        /// Deserializes a stream that contains a json text into an object.
        /// </summary>
        /// <typeparam name="T">The type of the object to be deserialized into.</typeparam>
        /// <param name="stream">The stream that contains the json text representation of the object.</param>
        /// <returns>A deserialized object.</returns>
        public static T DeserializeJson<T>(Stream stream) where T : class 
        {
            DataContractJsonSerializerSettings settings = new DataContractJsonSerializerSettings();
            settings.UseSimpleDictionaryFormat = true;

            DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(T), settings);
            return jsonSerializer.ReadObject(stream) as T;
        }
  • 0
    Это зависит от того, какую библиотеку вы используете для десериализации вашего JSON.
  • 0
    обычно есть атрибуты, которые вы можете установить для свойства c #, которые сообщат сериализатору не сериализовать это свойство.
Показать ещё 4 комментария
Теги:

1 ответ

0

Вы можете указать свойство IsRequired для DataMemberAttribute. Если вы установите значение false, десериализация не будет выбрасывать исключение, если этот член отсутствует в вашем json.

    [DataMember( IsRequired = false )]
    public bool ManualSessionClose { get; set; }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню