Гость
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / JsonConvert - DefaultValueHandling и NullValueHandling / 14 сообщений из 14, страница 1 из 1
31.03.2020, 23:47
    #39942698
RegisteredUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JsonConvert - DefaultValueHandling и NullValueHandling
коллеги!
есть 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
31.03.2020, 23:58
    #39942700
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JsonConvert - DefaultValueHandling и NullValueHandling
RegisteredUser,

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

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

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

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

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


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

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

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

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

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


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


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


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


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


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


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


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


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

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

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


Ага :)

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


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