JSON пустая строка - PullRequest
       7

JSON пустая строка

7 голосов
/ 09 октября 2009

почему JSON.stringify-Function преобразует строку .Empty ("") в "нулевую" -строку? Проблема, почему я не использую:

JSON.parse(json, function(key, value) {
    if (typeof value === 'string') {
        if (value == 'null')
            return '';
        return value;
    }
});

... если кто-то действительно напишет "null" (очень маловероятно, но возможно), у меня проблема с ...

спасибо за каждый ответ!

Ответы [ 2 ]

4 голосов
/ 18 апреля 2012

Старый вопрос - но это лучший результат при поиске 'json stringify empty string', поэтому я поделюсь найденным ответом.

Это, похоже, ошибка в некоторых версиях IE8, где пустые элементы DOM возвращают значение, которое выглядит как пустая строка, оценивает true по сравнению с пустой строкой, но на самом деле имеет некоторую другую кодировку, обозначающую, что это пустое значение.

Одним из решений является замена при вызове stringify.

JSON.stringify(foo, function(key, value) { return value === "" ? "" : value });

См. Также http://blogs.msdn.com/b/jscript/archive/2009/06/23/serializing-the-value-of-empty-dom-elements-using-native-json-in-ie8.aspx

1 голос
/ 10 октября 2009

Теперь самое простое решение этой проблемы - упаковать выражение «document.getElementById ('id'). Value" в конструктор класса String:

JSON.stringify({a:new String(document.getElementById('id').value)}); -> {"a":""}

Я не могу найти основную проблему, но при этом она хорошо работает и в Internet Explorer, и в FireFox.

Я не очень доволен этим грязным решением, но усилия не слишком много.

Библиотека JSON: https://github.com/douglascrockford/JSON-js/blob/master/json2.js

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...