ホームページ  >  記事  >  ウェブフロントエンド  >  NodejsのバッファをJSON形式とUTF-8文字列に変換するにはどうすればよいですか?

NodejsのバッファをJSON形式とUTF-8文字列に変換するにはどうすればよいですか?

青灯夜游
青灯夜游転載
2021-08-26 10:25:075615ブラウズ

Nodejs のバッファを JSON 形式と UTF-8 文字列に変換するにはどうすればよいですか?次の記事では、Nodejs でバッファーと JSON 形式を変換する方法と、バッファーを UTF-8 文字列に変換する方法を紹介します。

NodejsのバッファをJSON形式とUTF-8文字列に変換するにはどうすればよいですか?

Node.js はブラウザベースの JavaScript とは異なります。Node には ES6 ドラフトで ArrayBuffer が提案される前からバイナリ データを処理する方法があったからです。 Node では、Buffer(buffer) クラスが、ほとんどの I/O 操作で使用される主要なデータ構造です。これは、V8 ヒープの外側に割り当てられた生のバイナリ データであり、一度割り当てられるとサイズを変更できません。 [推奨学習: "nodejs チュートリアル "]

Node v6.0 より前では、新しいバッファを作成するには、new キーワードを使用してコンストラクター 関数:

let newBuff = new Buffer('I Love You')

v6.0 以降、新しいバッファー インスタンスを作成するには:

let newBuff = Buffer.from('I Love You')

new Buffer() コンストラクターは非推奨になり、別の # に置き換えられました。 ##Buffer.from()Buffer.alloc()、および Buffer.allocUnsafe() メソッドの置き換え。

詳細については、

公式ドキュメントをご覧ください。

バッファを JSON に変換

バッファは JSON に変換できます。

let bufferOne = Buffer.from('All work and no play makes Jack a dull boy')
console.log(bufferOne)

// <Buffer 41 6c 6c 20 77 6f 72 6b 20 61 6e 64 20 6e 6f 20 70 6c 61 79 20 6d 61 6b 65 73 20 4a 61 63 6b 20 61 20 64 75 6c 6c 20 62 6f 79>

let json = JSON.stringify(bufferOne, null, 2)
console.log(json)
/*
{
  "type": "Buffer",
  "data": [
    65,
    108,
    108,
    32,
    119,
    111,
    114,
    107,
    32,
    97,
    110,
    100,
    32,
    110,
    111,
    32,
    112,
    108,
    97,
    121,
    32,
    109,
    97,
    107,
    101,
    115,
    32,
    74,
    97,
    99,
    107,
    32,
    97,
    32,
    100,
    117,
    108,
    108,
    32,
    98,
    111,
    121
  ]
}
*/

JSON 変換するオブジェクトのタイプが

Buffer とそのデータであることを指定します。

JSON をバッファに変換
let bufferOriginal = Buffer.from(JSON.parse(json).data)
console.log(bufferOriginal)

// <Buffer 41 6c 6c 20 77 6f 72 6b 20 61 6e 64 20 6e 6f 20 70 6c 61 79 20 6d 61 6b 65 73 20 4a 61 63 6b 20 61 20 64 75 6c 6c 20 62 6f 79>

バッファを UTF-8 文字列に変換
console.log(bufferOriginal.toString(&#39;utf8&#39;)) // All work and no play makes Jack a dull boy

.toString() はバッファを文字列に変換する唯一の方法ではありません。さらに、デフォルトでは、utf-8 形式の文字列に変換されます。

バッファを文字列に変換する別の方法は、Node.js API の

StringDecoder コア モジュールを使用することです。

string_decoder このモジュールは、Buffer オブジェクトを文字列にデコードする方法を提供します (エンコードされたマルチバイト UTF-8 および UTF-16 を保持するため)キャラクターモード)API。上記の例の代替案は次のとおりです。

const { StringDecoder } = require(&#39;string_decoder&#39;)
const decoder = new StringDecoder(&#39;utf8&#39;)

let bufferOriginal = Buffer.from(JSON.parse(json).data)
console.log(decoder.write(bufferOriginal)) // All work and no play makes Jack a dull boy
console.log(decoder.end(bufferOriginal)) // All work and no play makes Jack a dull boy

Buffer インスタンスが StringDecoder インスタンスに書き込まれるとき、内部バッファを使用して、デコードされたデータが確実に保存されます。 string には不完全なマルチバイト文字が含まれていません。これらは、次の stringDecoder.write() の呼び出し、または次の stringDecoder.end() の呼び出しまで、バッファー内に保持されます。

プログラミング関連の知識について詳しくは、

プログラミング ビデオをご覧ください。 !

以上がNodejsのバッファをJSON形式とUTF-8文字列に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.cnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。