powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / JsonConvert - DefaultValueHandling и NullValueHandling
14 сообщений из 14, страница 1 из 1
JsonConvert - DefaultValueHandling и NullValueHandling
    #39942698
RegisteredUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
коллеги!
есть json такого вида:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
  "filters": {
    "phone": "+123456789",
    "date_from": null,
    "date_to": null,
    "status_id": 10,
    "sender_phone": "",
    "receiver_phone": "",
    "sender_name": "",
    "receiver_name": "",
    "sender_city": "",
    "receiver_city": ""
  }



хочу убрать из него пустые элементы и null, чтобы получить такой json

Код: html
1.
2.
3.
4.
  "filters": {
    "phone": "+123456789",
    "status_id": 10
  }



этот код убирает только null
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
            var str = JsonConvert.SerializeObject(
                this, 
                Formatting.Indented,
                new JsonSerializerSettings
                {
                    DefaultValueHandling = DefaultValueHandling.Ignore,
                    NullValueHandling = NullValueHandling.Ignore
                });
        }



как убрать пустые элементы?
...
Рейтинг: 0 / 0
JsonConvert - DefaultValueHandling и NullValueHandling
    #39942700
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RegisteredUser,

Такой сценарий не поддерживается.
Задайте null вручную.

Пустая строка и null -- не одно и то же. Поэтому это странное требование :)
...
Рейтинг: 0 / 0
JsonConvert - DefaultValueHandling и NullValueHandling
    #39942706
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кастомный JsonConverter можно реализовать.
...
Рейтинг: 0 / 0
JsonConvert - DefaultValueHandling и NullValueHandling
    #39942707
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,

Но уже не получится использовать статический метод класса JsonConvert )
...
Рейтинг: 0 / 0
JsonConvert - DefaultValueHandling и NullValueHandling
    #39942758
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
fkthat,

Но уже не получится использовать статический метод класса JsonConvert )

Почему же? Кастомный JsonConverter можно цеплять к классу или свойству через аттрибут .
...
Рейтинг: 0 / 0
JsonConvert - DefaultValueHandling и NullValueHandling
    #39942864
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Почему же? Кастомный JsonConverter можно цеплять к классу или свойству через аттрибут .


в принципе да, но это придётся делать для всех классов.

чтобы никогда не иметь проблем, лучше никогда не использовать статические методы, а всё через интерфейс, тогда можно будет расширять или заменять поведение.

но часто осознание приходит слишком поздно :)
...
Рейтинг: 0 / 0
JsonConvert - DefaultValueHandling и NullValueHandling
    #39943098
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
чтобы никогда не иметь проблем, лучше никогда не использовать статические методы, а всё через интерфейс

Пять звезд. Но не ты ли, помнится, меня критиковал, за то, что я DateTime.Now в интерфейс заворачиваю? :)) И, кстати, я недавно, случайно, как раз, наткнулся на вот такое .
...
Рейтинг: 0 / 0
JsonConvert - DefaultValueHandling и NullValueHandling
    #39943106
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
hVostt
чтобы никогда не иметь проблем, лучше никогда не использовать статические методы, а всё через интерфейс

Пять звезд. Но не ты ли, помнится, меня критиковал, за то, что я DateTime.Now в интерфейс заворачиваю? :)) И, кстати, я недавно, случайно, как раз, наткнулся на вот такое .


Не мог я такое критиковать :)
DateTime.Now -- однозначно нужно заворачивать в интерфейс.


fkthat
И, кстати, я недавно, случайно, как раз, наткнулся на вот такое .


Всё бы хорошо, но он находится в asp.net core (
Вообще, серьёзный пробел в архитектуре библиотек .net
...
Рейтинг: 0 / 0
JsonConvert - DefaultValueHandling и NullValueHandling
    #39943334
RegisteredUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt


DateTime.Now -- однозначно нужно заворачивать в интерфейс.


можно примерчик этого подхода?
...
Рейтинг: 0 / 0
JsonConvert - DefaultValueHandling и NullValueHandling
    #39943336
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RegisteredUser
можно примерчик этого подхода?
Как и любой другой интерфейс, инжектируемый через DI. Потому что для целей тестирования тебе вместо Now нужна будет конкретная детерминированная дата.
...
Рейтинг: 0 / 0
JsonConvert - DefaultValueHandling и NullValueHandling
    #39943338
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RegisteredUser
hVostt


DateTime.Now -- однозначно нужно заворачивать в интерфейс.


можно примерчик этого подхода?


Тестирование любого кода, в логике которого используется текущее время.
Например, проверка просроченного токена.
...
Рейтинг: 0 / 0
JsonConvert - DefaultValueHandling и NullValueHandling
    #39943339
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
JsonConvert - DefaultValueHandling и NullValueHandling
    #39943392
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Тестирование любого кода, в логике которого используется текущее время.
Например, проверка просроченного токена.

Туда же до кучи Guid.NewGuid() и всевозможный Random, в общем все, что возвращает результат, который никак от тебя не зависит.
...
Рейтинг: 0 / 0
JsonConvert - DefaultValueHandling и NullValueHandling
    #39943413
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
hVostt
Тестирование любого кода, в логике которого используется текущее время.
Например, проверка просроченного токена.

Туда же до кучи Guid.NewGuid() и всевозможный Random, в общем все, что возвращает результат, который никак от тебя не зависит.


Ага :)

В некоторых случаях достаточно иметь конфигурацию допустимого диапазона, или набора символов. Для тестирования не придётся мокать интерфейс, а сузить диапазон или набор символов до одного значения.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / JsonConvert - DefaultValueHandling и NullValueHandling
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]