JSON.stringify와 JSON.parse의 차이점


452

이 두 가지 파싱 방법을 사용할 때 혼란 스럽습니다.

json_encoded 데이터를 에코하고 ajax를 통해 다시 검색 한 후 JSON.stringifyJSON.parse를 사용해야하는 시점에 대해 종종 혼란스러워합니다 .

구문 분석 할 때 console.log[object,object] 에, 문자열 화 할 때 JavaScript 객체를 얻 습니다 .

$.ajax({
url: "demo_test.txt",
success: function(data) {
         console.log(JSON.stringify(data))
                     /* OR */
         console.log(JSON.parse(data))
        //this is what I am unsure about?
    }
});

1
아래 답변을 요약하면 다음과 같습니다. 1. 서로의 역수입니다. 2. 결합하여 데이터를 검증하거나 사람이 읽을 수있게하는 데 도움이됩니다 json.stringify(json.parse(data)).
Hafenkranich

답변:


673

JSON.stringify JavaScript 객체를 JSON 텍스트로 바꾸고 해당 JSON 텍스트를 문자열에 저장합니다. 예 :

var my_object = { key_1: "some text", key_2: true, key_3: 5 };

var object_as_string = JSON.stringify(my_object);  
// "{"key_1":"some text","key_2":true,"key_3":5}"  

typeof(object_as_string);  
// "string"  

JSON.parse JSON 텍스트 문자열을 JavaScript 객체로 변환합니다. 예 :

var object_as_string_as_object = JSON.parse(object_as_string);  
// {key_1: "some text", key_2: true, key_3: 5} 

typeof(object_as_string_as_object);  
// "object" 

9
json.stringify (json.parse (data))? 나는 이것을 코드에서 보았습니다 ... 그래서 이것은 기본적으로 json 데이터를 객체로 변환 한 다음 다시 json 데이터로 다시 변환하는 것입니다.
HIRA THAKUR

29
@MESSIAH — 예. 그것은 무의미하지만 JSON 유효성 검사기 역할을 할 수 있습니다.
Quentin

11
객체 키 값 쌍을 위해 간단한 객체 사본을 사용할 수도 있습니다.
hunterc

4
콘솔에서 디버깅하는 데 매우 유용하다는 것을 알았습니다. 쉽게 읽을 수 있습니다.
kirgy

2
@Quentin 예제를 통해 설명해 주시겠습니까?
Pardeep Jain

57

JSON.parse()JSON으로받은 것을 "구문 분석"하기위한 것입니다.
JSON.stringify()객체 / 배열에서 JSON 문자열을 만드는 것입니다.


4
정밀도 : 객체가 아닐 수 있습니다.
Denys Séguret

사실 배열이거나 Javascript가 특정 유형으로 인식하는 것이 될 수도 있습니다. 결론; 그것을 가져 와서 적절한 JSON으로 변환합니다.
Bjorn 'Bjeaurn'S

2
@dystroy — 객체 여야합니다 (배열은 객체 임).
Quentin

2
@quentinJSON.stringify(3)
Denys Séguret

@dystroy — 허, JSON 조각 을 다루기 위해 확장했다는 것을 몰랐다 . 직관적이지 않습니다.
Quentin

43

그들은 서로의 역수입니다. JSON.stringify()JS 객체를 JSON.parse()JSON 문자열로 직렬화하지만 JSON 문자열을 JS 객체로 직렬화 해제합니다.


25

그들은 서로 반대입니다.

JSON.stringify ()

JSON.stringify ()는 JS 객체 또는 값을 JSON 문자열로 직렬화합니다.

JSON.stringify({});                  // '{}'
JSON.stringify(true);                // 'true'
JSON.stringify('foo');               // '"foo"'
JSON.stringify([1, 'false', false]); // '[1,"false",false]'
JSON.stringify({ x: 5 });            // '{"x":5}'

JSON.stringify(new Date(2006, 0, 2, 15, 4, 5)) 
// '"2006-01-02T15:04:05.000Z"'

JSON.stringify({ x: 5, y: 6 });
// '{"x":5,"y":6}' or '{"y":6,"x":5}'
JSON.stringify([new Number(1), new String('false'), new Boolean(false)]);
// '[1,"false",false]'

JSON.parse ()

JSON.parse () 메소드는 문자열을 JSON으로 구문 분석하여 선택적으로 생성 된 값을 변환합니다.

JSON.parse('{}');              // {}
JSON.parse('true');            // true
JSON.parse('"foo"');           // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse('null');            // null

7
더 좋은 이름에 대한 parse()objectify()jsonify().
nu everest

왜 JSON.toString ()과 JSON.toObject ()가 아닌가? 나는이 이름을 선호한다 (특히 인텔리전스를 사용하는 새로운 프로그래머에게 유용하다).
Richard Chassereau

2
복사하는 대신 developer.mozilla.org/en/docs/Web/JavaScript/Reference/… 를 게시 할 수 있습니다.
Mahi

@nueverest는 jsonify()이후, 모호하고 오해의 소지가 될 것이다 parse()않습니다 하지 변환 StringA를 JSON(무엇을 어떤 종류의 jsonify()것이 표시), 그러나 parse()A가 변환 JSON 형식 String 중 하나에 : Object, Array, Number, String, Boolean또는 null. 사람들은 종종 JSON "문자열 표현"및 Object(또는 dictPython 등)을 혼동 합니다.
jbmusso

21

먼저, JSON.stringify()함수는 JavaScript 값을 JSON (JavaScript Object Notation) 문자열로 변환합니다. JSON.parse()함수는 JSON (JavaScript Object Notation) 문자열을 객체로 변환합니다. 이 두 기능에 대한 자세한 내용은 다음 링크를 참조하십시오.

https://msdn.microsoft.com/library/cc836459(v=vs.94).aspx https://msdn.microsoft.com/library/cc836466(v=vs.94).aspx

둘째, 다음 샘플은이 두 기능을 이해하는 데 도움이됩니다.

<form id="form1" runat="server">
    <div>
        <div id="result"></div>
    </div>
</form>

<script>
    $(function () {
        //define a json object
        var employee = { "name": "John Johnson", "street": "Oslo West 16", "phone": "555 1234567" };

        //use JSON.stringify to convert it to json string
        var jsonstring = JSON.stringify(employee);
        $("#result").append('<p>json string: ' + jsonstring + '</p>');

        //convert json string to json object using JSON.parse function
        var jsonobject = JSON.parse(jsonstring);
        var info = '<ul><li>Name:' + jsonobject.name + '</li><li>Street:' + jsonobject.street + '</li><li>Phone:' + jsonobject.phone + '</li></ul>';

        $("#result").append('<p>json object:</p>');
        $("#result").append(info);
    });
</script>

15
var log = { "page": window.location.href, 
        "item": "item", 
        "action": "action" };

log = JSON.stringify(log);
console.log(log);
console.log(JSON.parse(log));

// 출력은 다음과 같습니다.

// 첫 번째 콘솔은 다음과 같은 문자열입니다.

'{ "page": window.location.href,"item": "item","action": "action" }'

// 두 번째 콘솔의 경우 다음과 같은 개체입니다.

Object {
page   : window.location.href,  
item   : "item",
action : "action" }

6

JSON.stringify() 객체를 문자열로 변환합니다.

JSON.parse() JSON 문자열을 객체로 변환합니다.


2
"추가 할 항목이 없을 때가 아니라 제거 할 항목이 없을 때 완벽합니다." 앙투안 드 생 텍쥐페리
로니 로이스 톤

6

여기서 실제 혼란은 구문 분석 대 문자열 화가 data아니라 성공 콜백 매개 변수의 데이터 유형에 관한 것 입니다.

data 문서에 따라 원시 응답, 즉 문자열이거나 JavaScript 객체 일 수 있습니다.

성공

유형 : Function (Anything data, String textStatus, jqXHR jqXHR) 요청이 성공하면 호출 할 함수입니다. 이 함수에는 세 가지 인수가 전달됩니다. 서버에서 리턴 된 데이터 (dataType 매개 변수 또는 dataFilter 콜백 함수 (지정된 경우)에 따라 형식화 됨)

그리고 dataType의 기본값은 '지능형 추측'설정입니다.

dataType (기본값 : Intelligent Guess (xml, json, 스크립트 또는 html))

유형 : 문자열 서버에서 다시 예상되는 데이터 유형입니다. 아무것도 지정하지 않으면 jQuery는 응답의 MIME 유형을 기반으로 추론하려고 시도합니다 (XML MIME 유형은 XML을 생성하고 1.4에서 JSON은 JavaScript 객체를 생성하고 1.4 스크립트에서 스크립트를 실행하며 그 밖의 모든 것은 문자열로 반환).


2
이것은 혼란이 무엇인지 이해하는 데 도움이되므로 매우 유용한 추가 기능입니다!
rmcsharry

4

JavaScript 객체 <-> JSON 문자열


JSON.stringify() <-> JSON.parse()

JSON.stringify (obj)-직렬화 가능한 객체를 가져와 JSON 표현을 문자열로 반환합니다.

JSON.stringify() -> Object To String.

JSON.parse (string)-잘 구성된 JSON 문자열을 가져와 해당 JavaScript 객체를 반환합니다.

JSON.parse() -> String To Object.

설명 : JSON.stringify (obj [, replacer [, space]]);

Replacer / Space-옵션 또는 정수 값을 취하거나 interger 유형 반환 함수를 호출 할 수 있습니다.

function replacer(key, value) {
    if (typeof value === 'number' && !isFinite(value)) {
        return String(value);
    }
    return value;
}
  • Replacer Just finite가 아닌 no를 null로 바꾸는 데 사용하십시오.
  • 공간별로 Json String을 들여 쓰기위한 공간 사용

4

그들은 서로 완전히 반대입니다.

JSON.parse()JSON 으로 수신 된 데이터 를 구문 분석 하는 데 사용됩니다 . 그것은 직렬화 복원 JSON 문자열자바 스크립트 객체를 .

JSON.stringify()반면 에 객체 또는 배열 에서 JSON 문자열 을 만드는 데 사용됩니다 . 그것은 직렬화 자바 스크립트 객체JSON 문자열을 .


4

그것이 언급되었는지는 모르겠지만 JSON.parse (JSON.stringify (myObject))의 사용 중 하나는 원래 객체의 복제본을 만드는 것입니다.

원본 객체에 영향을주지 않고 일부 데이터를 엉망으로 만들 때 편리합니다. 아마도 가장 깨끗하고 빠른 방법은 아니지만 매우 복잡하지 않은 객체의 경우 가장 간단합니다.


3

JSON.stringify(obj [, replacer [, space]]) -직렬화 가능한 객체를 가져와 JSON 표현을 문자열로 반환합니다.

JSON.parse(string) -잘 구성된 JSON 문자열을 가져와 해당 JavaScript 객체를 반환합니다.


3

그들은 서로 반대하고 있습니다. JSON.Stringify()JSON을 문자열로 변환 JSON.Parse()하고 문자열을 JSON으로 구문 분석합니다.


1

JSON : 주로 서버와 데이터를주고받는 데 사용됩니다. JSON 객체를 서버로 보내기 전에 문자열이어야합니다.

JSON.stringify() //Converts the JSON object into the string representation.
var jsonData={"Name":"ABC","Dept":"Software"};// It is a JSON object
var jsonString=JSON.stringify(jsonData);// It is a string representation of the object
// jsonString === '{"Name":"ABC","Dept":"Software"}'; is true

또한 자바 스크립트 배열을 문자열로 변환합니다

var arrayObject=["ABC","Software"];// It is array object
var arrString=JSON.stringify(array);// It is string representation of the array (object)
// arrString === '["ABC","Software"]'; is true 

서버에서 JSON 데이터를 수신하면 데이터가 문자열 형식이되므로 문자열을 JSON 객체로 변환합니다.

JSON.parse() //To convert the string into JSON object.
var data='{ "name":"ABC", "Dept":"Software"}'// it is a string (even though it looks like an object)
var JsonData= JSON.parse(data);// It is a JSON Object representation of the string.
// JsonData === { "name":"ABC", "Dept":"Software"}; is true

1

JSON.parse() String을 Object로 변환하는 데 사용됩니다.
JSON.stringify()Object를 String으로 변환하는 데 사용됩니다.

이것도 참조 할 수 있습니다 ...

<script type="text/javascript">

function ajax_get_json(){

    var hr = new XMLHttpRequest();
    hr.open("GET", "JSON/mylist.json", true);
    hr.setRequestHeader("Content-type", "application/json",true);
    hr.onreadystatechange = function() {
        if(hr.readyState == 4 && hr.status == 200) {
           /*  var return_data = hr.responseText; */

           var data=JSON.parse(hr.responseText);
           var status=document.getElementById("status");
           status.innerHTML = "";
           /* status.innerHTML=data.u1.country;  */
           for(var obj in data)
               {
               status.innerHTML+=data[obj].uname+" is in "+data[obj].country+"<br/>";
               }

        }
    }
    hr.send(null);
    status.innerHTML = "requesting...";
}
</script>

1

JSON.parse () 는 JSON 문자열을 가져 와서 JavaScript 객체로 변환합니다.

JSON.stringify () 는 JavaScript 객체를 가져 와서 JSON 문자열로 변환합니다.

const myObj = {
      name: 'bipon',
      age: 25,
      favoriteFood: 'fish curry'
};

 const myObjStr = JSON.stringify(myObj);

console.log(myObjStr);
// "{"name":"bipon","age":26,"favoriteFood":"fish curry"}"

console.log(JSON.parse(myObjStr));
 // Object {name:"bipon",age:26,favoriteFood:"fish curry"}
메소드는 일반적으로 객체에서 사용되지만 배열에서도 사용할 수 있습니다.
const myArr = ['simon', 'gomez', 'john'];

const myArrStr = JSON.stringify(myArr);

console.log(myArrStr);
// "["simon","gomez","john"]"

console.log(JSON.parse(myArrStr));
// ["simon","gomez","john"]
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.