Mam następujący kod:Dlaczego funkcja zastępcza JSON.stringify() nie działa?
var foo = {
"foundation": "Mozilla",
"model": "box",
"week": 45,
"transport": {
"week": 3
},
"month": 7
};
console.log(JSON.stringify(foo,
function(k, v) {
if (k === "week")
return v;
else
return undefined;
}));
tak podobno, myślałem, co najmniej „tydzień”, że nie jest zagnieżdżona powinien wrócić, a ja zobaczę, jak zrobić jeden zagnieżdżony wróć też. Ale niezależnie od tego, jak to zmienię, console.log
wypisze undefined
, chyba że zawsze zmieniam funkcję po prostu na return v
, a następnie otrzymam z powrotem cały obiekt. Dlaczego?
Ponieważ pierwsze wywołanie zastępcy wysyła w '' "' (pusty ciąg), i zwracasz 'niezdefiniowane', skutecznie zatrzymując proces konwersji. –
Dokumenty MDN: [Parametr zastępczy] (https://developer.mozilla.org/en-US/docs/Using_native_JSON#The_replacer_parameter) –
Zastanawiam się, dlaczego pierwsza przepustka jest dla ... wydaje się, że musimy " specjalnie sobie z tym poradzisz "... jeśli to pierwsze przejście z pustym kluczem i wartością, gdy obiekt nie zostanie wykonany, zawsze możemy zrobić specjalne przetwarzanie, jeśli potrzebujemy tego pierwszego przejścia ... i tak naprawdę nie widzę powodu wymagające tego pierwszego podania –