json 문자열에서 $ .parseJSON을 사용하는 대신 객체를 가져 와서 json을 나타내는 문자열로 변수에 저장해야합니다.
(내가 다루고있는 라이브러리는 형식이 잘못된 json 유형을 예상하므로 제대로 작동하려면이를 처리해야합니다.)
이를 수행하는 가장 좋은 방법은 무엇입니까?
답변
편집 : 아래 코드를 구현하는 대신 Douglas Crockford의 json2.js 라이브러리를 사용해야합니다. 몇 가지 추가 기능과 더 나은 / 이전 브라우저 지원을 제공합니다.
https://github.com/douglascrockford/JSON-js 에서 json2.js 파일을 가져옵니다.
// implement JSON.stringify serialization
JSON.stringify = JSON.stringify || function (obj) {
var t = typeof (obj);
if (t != "object" || obj === null) {
// simple data type
if (t == "string") obj = '"'+obj+'"';
return String(obj);
}
else {
// recurse array or object
var n, v, json = [], arr = (obj && obj.constructor == Array);
for (n in obj) {
v = obj[n]; t = typeof(v);
if (t == "string") v = '"'+v+'"';
else if (t == "object" && v !== null) v = JSON.stringify(v);
json.push((arr ? "" : '"' + n + '":') + String(v));
}
return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}");
}
};
var tmp = {one: 1, two: "2"};
JSON.stringify(tmp); // '{"one":1,"two":"2"}'
코드 출처 : http://www.sitepoint.com/blogs/2009/08/19/javascript-json-serialization/
답변
나는 사용한다
$.param(jsonObj)
나에게 문자열을 가져다줍니다.
답변
요즘 대부분의 브라우저 JSON
에는 parse
및 stringify
메서드 를 포함 하는 네이티브 개체가 있습니다. 그래서 JSON.stringify({})
당신이 얻는 지 시도 하고보십시오 "{}"
. 매개 변수를 전달하여 키를 필터링하거나 예쁜 인쇄를 수행 할 수도 있습니다. 예를 들어 JSON.stringify({a:1,b:2}, null, 2)
각 키 앞에 개행 문자와 2 개의 공백을 넣습니다.
JSON.stringify({a:1,b:2}, null, 2)
준다
"{\n \"a\": 1,\n \"b\": 2\n}"
다음과 같이 인쇄되는
{
"a": 1,
"b": 2
}
질문의 일부를 엉망으로 만들려면 두 번째 매개 변수를 사용하십시오. 에서 http://www.javascriptkit.com/jsref/json.shtml :
replacer 매개 변수는 함수 또는 문자열 / 숫자의 배열 일 수 있습니다. JSON 개체 내의 각 멤버를 단계별로 진행하여 각 멤버를 변경해야하는 값을 결정할 수 있습니다. 함수로 다음을 반환 할 수 있습니다.
- 속성의 원래 값을 반환 된 값으로 대체하는 숫자, 문자열 또는 부울입니다.
- 직렬화 된 다음 반환되는 객체입니다. 개체 메서드 또는 함수는 허용되지 않으며 대신 제거됩니다.
- Null : 속성이 제거됩니다.
배열로서 내부에 정의 된 값은 JSON 개체로 변환 될 때 유지되어야하는 JSON 개체 내부의 속성 이름에 해당합니다.
답변
내가 찾은 가장 좋은 방법은 jQuery JSON 을 사용하는 것입니다.
답변
JSON을 객체로 구문 분석 한 다음 ajavscript 객체에서 잘못된 JSON을 생성 할 수 있습니다. 이것은 성능면에서 최선이 아닐 수도 있습니다.
그렇지 않으면 문자열을 아주 조금만 변경해야하는 경우 문자열로 취급하고 표준 자바 스크립트를 사용하여 변경하면됩니다.