Здравствуйте, Shmj, Вы писали:
S>Емнип, есть правило что если метод возвращает пустой список -- то он должен быть не null а просто пустой. S>Есть ли аналогичное правило для свойсв?
А вот интересно. Топовая (№1) либа Newtonsoft.JSON различает null и empty при сериализации/десериализации списков.
Если список null, то его вообще не будет в итоговом документе, что логично. Ведь если элемент не обязательный -- его быть не должно. И документ получается без лишнего мусора.
Т.е. если класс со списками участвует в сериализации -- то нужно отступить от правила с целью получения более читабельного документа, так как парадигма .Net о пустых списках не вписывается в парадигму JSON о необязательных элементах?
Здравствуйте, Shmj, Вы писали:
S>Т.е. если класс со списками участвует в сериализации -- то нужно отступить от правила с целью получения более читабельного документа, так как парадигма .Net о пустых списках не вписывается в парадигму JSON о необязательных элементах?
Передача в JSON — это I/O. Там свои правила. Также, на передаваемый объект и на его коллекции могут быть навешены атрибуты наподобие JsonIgnoreIfNullOrEmpty
Здравствуйте, Shmj, Вы писали:
S>Т.е. если класс со списками участвует в сериализации -- то нужно отступить от правила с целью получения более читабельного документа, так как парадигма .Net о пустых списках не вписывается в парадигму JSON о необязательных элементах?
В своём велосипеде я различаю null и пустые коллекции, но и те и другие сериализуются в виде одного флажка.
Если ты используешь JSON для сериализации данных, то, мне кажется, несколько лишних байт никак не скажутся на производительности.
А преобразовывать пустые коллекции в null и обратно себе дороже. Рано или поздно возникнет какой-нибудь баг, где ты будешь ловить Argument null exception в том случае, когда передаёшь пустой массив, а он при этом совершенно валиден.
Здравствуйте, LWhisper, Вы писали:
LW>В своём велосипеде я различаю null и пустые коллекции, но и те и другие сериализуются в виде одного флажка.
По идее в .Net вместо null все списки должны быть пустыми, даже если в исходном JSON-документе эти узлы отсутствуют.
Но как тогда отличать был ли в исходном JSON-документе узел пустым [] или отсутствовал вовсе?
LW>Если ты используешь JSON для сериализации данных, то, мне кажется, несколько лишних байт никак не скажутся на производительности.
JSON у меня в качестве конфигурационных файлов, как удобная альтернатива XML. Их редактируют вручную. А пустые узлы не удобны, лучше исключить их вообще из документа.