JSON空字符串

时间:2009-10-09 13:35:52

标签: json string

为什么JSON.stringify-Function将string.Empty(“”)转换为“null”-String? 问题,我为什么不使用:

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

...是,如果有人真的写“空”(非常不可能,但可能),我有问题......

感谢每个答案!

2 个答案:

答案 0 :(得分:4)

老问题 - 但是当你搜索'json stringify空字符串'时它是最好的结果,所以我会分享我找到的答案。

这似乎是IE8的某些版本中的一个错误,其中空DOM元素返回一个看起来像空字符串的值,与空字符串相比时计算为true,但实际上有一些不同的编码表示它是null值。

一种解决方案是在调用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 :(得分:1)

现在这个问题的最有效解决方案是,在String类的构造函数中打包“document.getElementById('id')。value”表达式:

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

我找不到主要问题,但有了这个,它在Internet Explorer和FireFox中运行良好。

我对这个肮脏的解决方案不是很满意,但努力并不多。

JSON库:https://github.com/douglascrockford/JSON-js/blob/master/json2.js