JSON: 概要


前提


ドキュメント


JSON概要

使用例

7種のデータ型

一つのJSON = 一つのデータ型


JSONの例

true
"あいうえぉ"
{
  "名前": "アリス",
  "持ち物": [
    { "りんご": 3 },
    "勇気"
  ]
}

オブジェクトの構造

{
  "キー": データ型,
  "キー"  :  データ型
}

配列の構造

 [ データ型,データ型,

  データ型
   ]

JavaScriptのデータ型の文法と違う部分

直接にJSONを編集する際は注意。ここのコード例はNG

// コメントNG
{
  "key": 123
}
[ 'NG文字列', `NG文字列` ]
{ 
  "key1": [ 1, 2, 3, ],
  "key2": "a",
}
{
  キー1: 1,
  'キー2': 2
}
[ - 1, +3, .5, 0xa, 012, 00 ]
{
  "key": undefined
}

JavaScriptのJSONオブジェクト

ビルトインのメソッドが2つある。


JSON.parse(文字列)

// JSONのnull -> JavaScriptのnull
JSON.parse('null') === null // true

// JSONの文字列(二重引用符あり) -> JavaScriptのstring
typeof JSON.parse('"null"') // 'string'
JSON.parse('"null"') === 'null' // true

JSON.parse('0.0314e2') // 3.14
JSON.parse('{"a":true}') // { a: true }
JSON.parse('[1, 2, 3]') // [ 1, 2, 3 ]

JSON.stringify(値)

// JavaScriptのオブジェクト -> JSONのオブジェクト
// JSONに必要な二重引用符が追加される
JSON.stringify({a: true}) // '{"a":true}'

// JSONの文字列へ
JSON.stringify('null') // '"null"'
// JSONのnullへ
JSON.stringify(null) // 'null'

// JSONでは末尾の,が禁止なので除かれる
// デフォルトでスペースもなくなる
JSON.stringify([  1 ,2  ,3   ,]) // '[1,2,3]'
// 引数2は変換関数で、ここではnullで無効に
JSON.stringify({a:1, b:[1,2,3]}, null, 3) // 3つのスペース
{
   "a": 1,
   "b": [
      1,
      2,
      3
   ]
}

npmパッケージ: jsonfile

実際にファイルシステムで読み書きする場合、const fs = require('fs')から自力でやってもいいが、jsonfileパッケージが便利。

npm install jsonfile
const jsonfile = require('jsonfile')
// コールバック
jsonfile.readFile(パス, (error, json) => {
  if (error) console.error(error)
  console.log('読込:', json)
})
// Promise
jsonfile.writeFile(パス, obj)
  .then(res => console.log('書込'))
  .catch(error => console.error(error))