2009-10-09 8 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; 
    } 
}); 

..., 경우 누군가가 정말 "널 (null)"쓰기된다 (매우 가능성이 있지만 가능하다), 나는

... 문제로이

각 답변에 감사드립니다!

+0

JSON.stringify 함수를 참조? 어떤 프로그래밍 언어입니까? (자바 스크립트, 그렇 겠지?) 어떤 JSON 라이브러리를 사용하고 있습니까? – Jesper

+0

FireFox는 다른 것을 말합니다 : JSON.stringify ({a : ''}); -> { "a": ""} – jantimon

+0

예, 자바 스크립트. 저는 다음을 사용합니다 : http://www.json.org/json2.js @Ghommey : 맞아요! 파이어 폭스에서 제대로 작동하지만 .... 인터넷 익스플로러에서 .... –

답변

1

지금이 문제에 대한 esiest 솔루션은 "document.getElementById를 ('ID') 값."를 포장하는 표현을 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

4

오래된 질문 -하지만 당신은 내가 내가 찾은 답을 공유 할 수 있도록 '빈 문자열을 캐릭터 라인 화 JSON'검색의 상단 결과.

이것은 특정 버전의 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