json.stringify() と json.parse() の違いと使い方

json.stringify() と json.parse() の違いと使い方

1. JSON.stringify() と JSON.parse() の違い

私たちは皆、JSON.stringify()とJSON.parse()を使ったことがあるでしょう。名前からわかるように
JSON.stringify() は、JavaScript オブジェクトを JSON 文字列に変換するために使用されます。
JSON.parse() は JSON 文字列をオブジェクトに変換できます。

わかりやすいバージョン:

  • JSON.stringify() はオブジェクト a を文字列 s に変換します。
  • JSON.parse() は文字列 s をオブジェクト a に変換します。

簡単に言えば、それらの機能は相対的です。JSON.stringify() を使用してオブジェクト a を文字列 c に変換した場合、JSON.parse() を使用して文字列 c をオブジェクト a に復元できます。

arr = [1,2,3]とします。
JSON.stringify(arr); //'[1,2,3]'
typeof JSON.stringify(arr);//文字列

文字列を '[1,2,3]' とします。
console.log(JSON.parse(文字列)) //[1,2,3]
console.log(typeof JSON.parse(string))//オブジェクト

JSON.parse() を使用する際に注意すべき点は、このメソッドは JSON 文字列をオブジェクトに変換するため、文字列は JSON 形式に準拠している必要がある、つまりキーと値の両方を二重引用符で囲む必要があるということです。

a = '["1","2"]'とします。
b = "['1','2']"とします。
console.log(JSON.parse(a)); // 配列 [1,2]
console.log(JSON.parse(b)); // エラー

2. JSON.stringify() の便利な使い方

1. 配列にオブジェクトが含まれているかどうか、またはオブジェクトが等しいかどうかを判断します。

//配列にオブジェクトが含まれているかどうかを判断します。let data = [
  {name:'ナゲッツ'},
  {name:'CSS 学習'},
  {name:'js 学習'},
  ]、
  val = {name:'ナゲット'};
JSON.stringify(data).indexOf(JSON.stringify(val)) !== -1; // 真

// 2つの配列/オブジェクトが等しいかどうかを判定する let a = [1,2,3],
  1,2,3 は 1 です。
JSON.stringify(a) === JSON.stringify(b); //true

2. localStorage/sessionStorage にオブジェクトの保存を許可します。

デフォルトでは、localStorage/sessionStorage は文字列しか保存できません。実際の開発では、オブジェクトを保存する必要がある場合がよくあります。この場合、保存時に json.stringify() を使用してオブジェクトを文字列に変換できます。キャッシュを取得するときは、json.parse() を使用してオブジェクトに戻すだけです。

//ストレージ関数 setLocalStorage(key,val){
  window.localStorage.setItem(キー、JSON.stringify(val));
};
//関数 getLocalStorage(key){ を取得する
  val = JSON.parse(window.localStorage.getItem(key)); とします。
 window.localStorage.removeItem(キー)
  戻り値:
};
//テストlet data = [
  {name:'ナゲッツ'},
  {name:'CSS 学習'},
  {name:'js 学習'},
  ];
setLocalStorage('STORAGEDATE',データ);
a = getLocalStorage('STORAGEDATE'); とします。 

3. オブジェクトのディープコピーを実装する

実際の開発では、元のデータに影響を与えることを恐れる場合は、任意の操作のためにデータのディープコピーを作成することがよくあります。実際、ディープコピーを実現するために JSON.stringify() と JSON.parse() を使用するのは良い選択です。

//ディープコピー関数 deepClone(data) {
  _data = JSON.stringify(データ) とします。
    dataClone = JSON.parse(_data);
  dataClone を返します。
};
//テストlet arr = [1,2,3],
  _arr = deepClone(arr);
ar[0] = 2;
console.log(arr,_arr) //[2,2,3] [1,2,3]

json.stringify() と json.parse() の違いと使い方についての記事はこれで終わりです。json.stringify() と json.parse() についての詳細は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • JSON.parse() と JSON.stringify() のパフォーマンステストの詳細な説明
  • JSはJSON.parse()とJSON.stringify()を使用してオブジェクトのディープコピー関数解析を実装します。
  • JavaScript の JSON.parse 関数と JSON.stringify 関数
  • JSON での動的キー設定と JSON.parse と JSON.stringify() の違い
  • JSON.stringify() と JOSN.parse() の違いについて簡単に説明します。
  • JSON.parse()、JSON.stringify()、jQuery.parseJSON() の使用について
  • JSON オブジェクトと文字列間の変換について説明します。JSON.stringify(obj) と JSON.parse(string)
  • JSON.parse() と JSON.stringify() についての簡単な説明
  • JSON.parse() と JSON.stringify() の紹介
  • JSON.parse と JSON.stringify の使い方の詳細な説明

<<:  mysql5.7.17 zip の解凍とインストールの詳細な手順

>>:  MySQL レプリケーション テーブルの詳細とサンプル コード

推薦する

MySQL Truncate の使用方法の詳細な説明

目次MySQL 切り捨ての使用1. 構文を切り捨てる2. Truncateの使用上の注意3. TRU...

Vue のループフォーム項目例の詳細な説明

場合によっては、ユーザーがボタンをクリックして同様のフォームを追加し、クリックごとに 1 回追加でき...

一般的なDocker Composeコマンドの詳細な説明

1. Docker Compose の使用方法は docker コマンドの使用方法と非常に似ています...

Linux 7.6 バイナリに MySQL 8.0.27 をインストールする詳細な手順

目次1. 環境整備1.1 オペレーティング システムのバージョン1.2 ディスク容量1.3 ファイア...

Centos7 に MySQL 8.0.23 をインストールする手順 (初心者レベル)

まず、MySQL とは何かを簡単に紹介します。簡単に言えば、データベースはデータを格納するための倉庫...

ページング効果を実装するミニプログラム

この記事の例では、ページング効果表示を実現するためのミニプログラムの具体的なコードを参考までに共有し...

Docker可視化管理ツールであるDocker UIの使用

1. DockerUIの紹介DockerUI は Docker API をベースとしており、Dock...

MYSQL の COLLATE とは何ですか?

序文MySQL で show create table <tablename> コマンド...

htmlダウンロード機能の詳しい説明

新しいプロジェクトは基本的に終了しました。フロントエンドとバックエンドを分離して統合を完了したのは初...

sqlとmysqlの違いは何ですか?

SQL とは何ですか? SQL はデータベースを操作するために使用される言語です。 SQL はすべ...

iviewは動的なフォームとカスタム検証期間の重複を実装します

フォーム項目を動的に追加するiview の動的なフォーム追加は非常に簡単です。フォーム項目を配列に設...

ページキャッシュを無効にするいくつかの方法を共有する

本日、開発中に、顧客からページをキャッシュしないように要求される方法に遭遇しました。調べたところ、ペ...

Vue3デスクトップアプリケーションの構築方法

この記事では、Vite を使用して Vue 3 デスクトップ プロジェクトを開発する方法について説明...

MySQL の重要なログファイルの包括的なインベントリ

目次導入ログ分類パラメータファイルエラーログファイル完全なログファイルスロークエリログバイナリログフ...

JavaScript配列の一般的なメソッドの概要

目次1. はじめに2. フィルター() 3. マップ() 4. ソート() 5. 減らす() 6. ...