为什么JSON.stringify-Function将string.Empty(“”)转换为“null”-String? 问题,我为什么不使用:
JSON.parse(json, function(key, value) {
if (typeof value === 'string') {
if (value == 'null')
return '';
return value;
}
});
...是,如果有人真的写“空”(非常不可能,但可能),我有问题......
感谢每个答案!
答案 0 :(得分:4)
老问题 - 但是当你搜索'json stringify空字符串'时它是最好的结果,所以我会分享我找到的答案。
这似乎是IE8的某些版本中的一个错误,其中空DOM元素返回一个看起来像空字符串的值,与空字符串相比时计算为true,但实际上有一些不同的编码表示它是null值。
一种解决方案是在调用stringify时进行替换。
JSON.stringify(foo, function(key, value) { return value === "" ? "" : value });
答案 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