2009-10-09 46 views
6

なぜJSON.stringify-Functionはstring.Empty( "")を "null" -Stringに変換しますか? 問題、なぜ私が使用していない:JSON空文字列

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

は...

...誰かが本当に(非常に低いが、可能である) "ヌル" を書いた場合、iは問題を抱えている、あります

それぞれのお返事ありがとうございます!

+0

JSON.stringify機能も参照してください?どのようなプログラミング言語ですか? (JavaScript、おそらく?)どのようなJSONライブラリを使用していますか? – Jesper

+0

FireFoxは何か他のことを言っています:JSON.stringify({a: ''}); - > {"a": ""} – jantimon

+0

はい、javascript。私は以下を使用します: http://www.json.org/json2.js @Ghommey: あなたは正しいです! FireFoxでは正常に動作しますが、インターネットエクスプローラではありません.... –

答えて

1

今この問題の解決策esiestをパックする、あるStringクラスのコンストラクタでの表現「のdocument.getElementById( 『IDを』)値。」:

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

私は見つけることができませんこれは主にInternet ExplorerやFireFoxでうまくいきます。

私はこの汚れた解決策にはあまり満足していませんが、その努力はあまりありません。

JSONライブラリ:https://github.com/douglascrockford/JSON-js/blob/master/json2.js

4

古い質問 - しかし、あなたは、私は私が見つけた答えを共有しますので、「空の文字列を文字列化、JSON」を検索し、その上部結果。

これは空のDOM要素が空の文字列のように見える値を返し、空の文字列と比較すると真を評価しますが、実際にはそれがaであることを示すいくつかの異なるエンコーディングを持つIE8の特定のバージョンのバグですヌル値。

解決策の1つは、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