技術ブログ

(技術系中心)基本自分用備忘録なので、あくまで参考程度でお願いします。

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

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

JavaScriptブラウザーでは組み込みの JSON オブジェクトが利用でき、それには以下の 2 つのメソッドが備わっています。

■ parse(): JSON 文字列を引数に取り、それに対する JavaScript オブジェクトを返します。
■ stringify(): オブジェクトを引数に取り、等価な JSON 文字列を返します。

超簡単にまとめるとJSONの生成する時がJSON.stringfiy()JSONの読み込みをする時がJSON.parse()になります。

JSON.stringify() – JavaScriptJSONを作成する

const myObj = {
  name: 'Skip',
  age: 2,
  favoriteFood: 'Steak'
};

const myObjStr = JSON.stringify(myObj);
// オブジェクトを引数に取り、等価な JSON 文字列を返します。

console.log(myObjStr);
// "{"name":"Sammy","age":6,"favoriteFood":"Tofu"}"

配列に対しても利用可能

const myArr = ['bacon', 'lettuce', 'tomatoes'];

const myArrStr = JSON.stringify(myArr);
// 配列を引数に取り、等価な JSON 文字列を返します。

console.log(myArrStr);
// "["shark","fish","dolphin"]"

■ 応用篇
JSON.parse() は、値が返される前にオブジェクト値を変換できる2つ目の引数として、関数を指定することができます。

const user = {
  name: 'Sammy',
  email: 'Sammy@domain.com',
  plan: 'Pro'
};

const userStr = JSON.stringify(user);

JSON.parse(userStr, (key, value) => {
  if (typeof value === 'string') {
    return value.toUpperCase();
  }
  return value;
});

↓
{
    "name": "SAMMY",
    "email": "SAMMY@DOMAIN.COM",
    "plan": "PRO"
}

JSON.parse () – JavaScriptJSONを読み込む

const myObj = {
  name: 'Skip',
  age: 2,
  favoriteFood: 'Steak'
};

const myObjStr = JSON.stringify(myObj);
// オブジェクトを引数に取り、等価な JSON 文字列を返します。

console.log(myObjStr);
// "{"name":"Sammy","age":6,"favoriteFood":"Tofu"}"


---- 追加 ----

console.log(JSON.parse(myObjStr));
// Object {name:"Sammy",age:6,favoriteFood:"Tofu"}
const myArr = ['bacon', 'lettuce', 'tomatoes'];

const myArrStr = JSON.stringify(myArr);
// 配列を引数に取り、等価な JSON 文字列を返します。

console.log(myArrStr);
// "["shark","fish","dolphin"]"

---- 追加 ----

console.log(JSON.parse(myArrStr));
// ["shark","fish","dolphin"]

■ 応用篇
JSON.stringify() は、2つの追加引数を指定することができます。1つ目はreplacer関数で、2 つ目は文字列または数値を、返された文字列のスペース(インデント)として使用します。

const user = {
  id: 229,
  name: 'Sammy',
  email: 'Sammy@domain.com'
};

function replacer(key, value) {
  console.log(typeof value);
  if (key === 'email') {
    return undefined;
  }
  return value;
}

const userStr = JSON.stringify(user, replacer);
// "{"id":229,"name":"Sammy"}"

参考

【parse / stringify】JavaScriptでJSONを簡単に扱う方法 | IT・ものづくりエンジニアの転職・派遣求人情報なら【パソナテック】