2013-03-04 4 views
0

Мне любопытно, какой алгоритм использует экспресс для сериализации объектов в JSON, и если есть способ его изменить.Алгоритм сериализации JSON в express.js

Я замечаю, что он только сериализует собственные свойства объектов, что затрудняет отправку объектов, которые наследуются от других объектов. Он также опускает любые свойства, значение которых равно undefined. Я понимаю, что функционально, опуская их, это то же самое, что включать их и экономить пропускную способность, но в том числе и делает JSON более доступным для людей, читающих его, пытаясь понять, как использовать API.

В любом случае, это вопрос о том, как экспресс делает вещи и меньше о том, что мой код должен делать: =)

+1

Я думаю, что вы лучше от сериализации с собственным Lib - это «встроенные» поведение сериализации, а не как подключаемый/перестраиваемый сериалайзера, такими как Джексон в Java и т.д. – 7zark7

+1

Если вы можете установить их в 'null' вместо' undefined', тогда они будут включены. –

ответ

7

Это не express, что делает сериализацию, она использует стандартный метод сериализации stringify. Вы можете сделать некоторую модификацию того, как вещи сериализуются с использованием аргумента replacer, но невозможно заставить его показать значения undefined.

0

Он также опускает любые свойства, значение которых не определено.

Нет объектов, значение которых не определено. Если вы читаете свойство, которое не существует, undefined будет возвращен не потому, что его значение равно undefined, а потому, что нет значения для возврата, потому что такого свойства нет.

Набор неопределенных свойств (бесконечно заданные значения).

var o = {}; 
o.x // undefined 

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

for (var key in o) { 
    if (o.hasOwnProperty(key)) { 
     console.log(o[key]); 
    } 
} 
+0

Рассмотрим o.m = undefined; Undefined - глобальная переменная: =) – iter

Смежные вопросы