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

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

青灯夜游
リリース: 2021-08-26 10:25:07
転載
5761 人が閲覧しました

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 までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート