[javascript] 객체를 문자열로 변환

JavaScript 객체를 문자열로 어떻게 변환 할 수 있습니까?

예:

var o = {a:1, b:2}
console.log(o)
console.log('Item: ' + o)

산출:

Object {a = 1, b = 2} // 매우 읽기 쉬운 출력 🙂
항목 : [object Object] // 안에 무엇이 있는지 모릅니다 🙁



답변

JSON.stringify객체의 변수 집합을 JSON 문자열로 변환하는을 사용 하는 것이 좋습니다 . 대부분의 최신 브라우저는 기본적으로이 방법을 지원하지만 지원하지 않는 브라우저의 경우 JS 버전을 포함 할 수 있습니다 .

var obj = {
  name: 'myObj'
};

JSON.stringify(obj);


답변

자바 스크립트 문자열 () 함수 사용

 String(yourobject); //returns [object Object]

또는 stringify ()

JSON.stringify(yourobject)


답변

물론 객체를 문자열로 변환하려면 다음과 같은 고유 한 방법을 사용해야합니다.

function objToString (obj) {
    var str = '';
    for (var p in obj) {
        if (obj.hasOwnProperty(p)) {
            str += p + '::' + obj[p] + '\n';
        }
    }
    return str;
}

실제로, 위는 일반적인 접근 방식을 보여줍니다. http://phpjs.org/functions/var_export:578 또는 http://phpjs.org/functions/var_dump:604 와 같은 것을 사용하고 싶을 수도 있습니다 .

또는 메서드 (객체의 속성으로 함수)를 사용하지 않는 경우 새로운 표준을 사용할 수 있습니다 (그러나 이전 브라우저에서는 구현할 수는 없지만 지원하는 유틸리티도 찾을 수 있음), JSON .stringify (). 그러나 객체가 JSON으로 직렬화 할 수없는 함수 또는 다른 속성을 사용하는 경우 다시 작동하지 않습니다.


답변

로 간단하게 유지 console하려면 대신 쉼표를 사용할 수 있습니다 +. 는 +쉼표 콘솔에 별도로 표시하는 반면, 문자열로 개체를 변환하려고합니다.

예:

var o = {a:1, b:2};
console.log(o);
console.log('Item: ' + o);
console.log('Item: ', o);   // :)

산출:

Object { a=1, b=2}           // useful
Item: [object Object]        // not useful
Item:  Object {a: 1, b: 2}   // Best of both worlds! :)

참조 : https://developer.mozilla.org/en-US/docs/Web/API/Console.log


답변

편집 이 답변은 Internet Explorer에서 작동하지 않으므로 사용하지 마십시오. 게리 챔버 솔루션을 사용하십시오 .

toSource () 는 JSON으로 작성할 함수입니다.

var object = {};
object.first = "test";
object.second = "test2";
alert(object.toSource());


답변

하나의 옵션 :

console.log('Item: ' + JSON.stringify(o));

o는 문자열로 인쇄됩니다

또 다른 옵션 (같은 soktinpk은 콘솔이 IMO 디버깅을 위해 더 나은 의견에서 지적), 및 :

console.log('Item: ', o);

o는 더 많은 필드가있는 경우 드릴 다운 할 수있는 개체로 인쇄됩니다.


답변

여기에있는 해결책 중 어느 것도 나를 위해 일하지 않았습니다. JSON.stringify는 많은 사람들이 말하는 것처럼 보이지만 함수를 잘라 내고 테스트 할 때 시도한 일부 객체 및 배열에서는 꽤 깨진 것처럼 보입니다.

적어도 Chrome에서 작동하는 자체 솔루션을 만들었습니다. Google에서 찾아 보는 사람이 찾을 수 있도록 여기에 게시하십시오.

//Make an object a string that evaluates to an equivalent object
//  Note that eval() seems tricky and sometimes you have to do
//  something like eval("a = " + yourString), then use the value
//  of a.
//
//  Also this leaves extra commas after everything, but JavaScript
//  ignores them.
function convertToText(obj) {
    //create an array that will later be joined into a string.
    var string = [];

    //is object
    //    Both arrays and objects seem to return "object"
    //    when typeof(obj) is applied to them. So instead
    //    I am checking to see if they have the property
    //    join, which normal objects don't have but
    //    arrays do.
    if (typeof(obj) == "object" && (obj.join == undefined)) {
        string.push("{");
        for (prop in obj) {
            string.push(prop, ": ", convertToText(obj[prop]), ",");
        };
        string.push("}");

    //is array
    } else if (typeof(obj) == "object" && !(obj.join == undefined)) {
        string.push("[")
        for(prop in obj) {
            string.push(convertToText(obj[prop]), ",");
        }
        string.push("]")

    //is function
    } else if (typeof(obj) == "function") {
        string.push(obj.toString())

    //all other values can be done with JSON.stringify
    } else {
        string.push(JSON.stringify(obj))
    }

    return string.join("")
}

편집 :이 코드를 개선 할 수는 있지만 결코 그렇게하지는 못했습니다. 사용자 andrey는 다음 과 같은 의견으로 개선을 제안했습니다 .

여기에 ‘null’과 ‘undefined’를 처리 할 수 ​​있고 약간의 쉼표를 추가하지 않는 약간 변경된 코드가 있습니다.

전혀 확인하지 않았으므로 위험을 감수하십시오. 의견으로 추가 개선 사항을 제안하십시오.