JSON 객체를 버퍼로, 버퍼를 JSON 객체로 다시 변환


104

나는 JSON 객체를 가지고 있으며 그것을 a로 변환하고 Buffer여기에서 몇 가지 프로세스를 수행하고 있습니다. 나중에 동일한 버퍼 데이터를 변환하여 유효한 JSON 개체로 변환하고 싶습니다.

Node V6.9.1에서 작업 중입니다.

아래는 내가 시도한 코드이지만 [object object]JSON으로 다시 변환 하고이 개체를 열 수 없을 때 나타납니다.

var obj = {
   key:'value',
   key:'value',
   key:'value',
   key:'value',
   key:'value'
}

var buf = new Buffer.from(obj.toString());

console.log('Real Buffer ' + buf);  //This prints --> Real Buffer <Buffer 5b 6f 62 6a 65 63 74>

var temp = buf.toString();

console.log('Buffer to String ' + buf);  //This prints --> Buffer to String [object Object]

그래서 검사 방식을 사용하여 전체 개체를 인쇄하려고했습니다.

console.log('Full temp ' + require('util').inspect(buf, { depth: null }));  //This prints --> '[object object]' [not printing the obj like declared above]

배열처럼 읽으려고하면

 console.log(buf[0]);  // This prints --> [ 

나는 또한 파싱을 시도했다. SyntaxError: Unexpected token o in JSON at position 2

내가 만든 것과 같은 실제 개체로 볼 필요가 있습니다 (위에서 선언 한 것과 같습니다).

도와주세요..


({"id":"value"}).toString() === '[object Object]' //true
Eric Hodonsky

new Buffer()더 이상 사용되지 않습니다. 여기를 참조하십시오 : nodejs.org/api/buffer.html#buffer_new_buffer_array
스펜서

답변:


189

호출하지 않고 json을 문자열 화해야합니다. toString

var buf = Buffer.from(JSON.stringify(obj));

그리고 문자열을 json obj로 변환하려면 :

var temp = JSON.parse(buf.toString());

1
그나마이 필요new
jpillora

2
더 나은 해결책이 없습니까? 숫자를 문자열로 변환하고 싶지 않습니다.
Benoit

1
또 다른 버퍼 필드에있을 경우이 작동하지 않습니다obj
gilamran

7
실제로 여기에는 toString이 필요하지 않습니다. groups.google.com/forum/#!topic/nodejs/hybuh7DbQkM
Dzenly

1
나를 위해 JSON.stringify를 제거하고 매개 변수 내부에 개체를 직접 넣을 때 다음과 같이 작동했습니다. var buf = Buffer.from ({key : 'value', key : 'value', key : 'value' , 키 : '값', 키 : '값'});
Jorge Mauricio
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.