Help us understand the problem. What is going on with this article?

JSONについて調べてみた

More than 1 year has passed since last update.

JSONとは

JavaScript Object Notation
データを表現するための記法です。
JavaScriptの構文に似ていますが、JavaScriptとは独立して扱われます。
JavaScript以外のプログラミング言語でもJSONを扱うことができる機能が準備されています。

形式

JSONはオブジェクト、もしくは配列で表現されます。

オブジェクト

JSON
{
 "key" : value,
 "key" : value,
 "key" : value
}

オブジェクトの中に、keyvalueのペアであるメンバーを複数含むことができます。
このメンバーは順序付けされていません。

  • メンバー("key" : value)は,で区切って複数定義することができる
  • key"(ダブルクォート)で囲む必要がある(シングルクォートではだめ)
  • 一つの値を分断しない限り、改行やスペースを自由にいれることができる(そのため上記のように成形することができます)
  • valueは以下の型を取ることができる
説明
文字列 "(ダブルクォート)で囲む必要がある
数値 10進数、指数表記を使うことが可能(8進数、16進数は使うことができない)
オブジェクト
配列
boolean true/false。小文字の必要がある
null 小文字の必要がある

サンプル

{
  "user" : {
    "name": "Taro",
    "age": 30,
    "languages": ["Japanese", "English"],
    "active": true
  }
}

配列

以下のように、配列として扱うこともできます。

[
  {
    "name": "Taro",
    "age": 30,
    "languages": ["Japanese", "English"],
    "active": true
  },
  {
    "name": "Aiko",
    "age": 33,
    "languages": ["Japanese"],
    "active": false
  },
  {
    "name": "Hanako",
    "age": 29
    "languages": ["English", "French"],
    "active": true
  }
]

JavaScriptでのJSONの扱い方

環境

  • Windows10
  • Node.js 10.14.1

Jsonデータの作り方

var userJson = {
  "name": "Taro",
  "age": 30,
  "active": true
}
console.log(userJson.name);
// Taro

オブジェクトをJSON文字列に変換する

var userObj = {
  name: "Taro",
  age: 30,
  active: true
}
console.log(userObj);
// { name: 'Taro', age: 30, active: true }

var userJson = JSON.stringify(userObj);
console.log(userJson);
// {"name":"Taro","age":30,"active":true}

JSON.stringifyを使用することで、オブジェクトデータをJSON文字列へ変換することができます。

JSON文字列をオブジェクトに変換する

var userObj = {
  name: "Taro",
  age: 30,
  active: true
}
var userJson = JSON.stringify(userObj); // JSON文字列へ変換
console.log(userJson);
// {"name":"Taro","age":30,"active":true}
console.log(userJson.name);
// undefined

var parsed = JSON.parse(userJson); // オブジェクトへ変換
console.log(parsed);
// { name: 'Taro', age: 30, active: true }
console.log(parsed.name);
// Taro

JSON.parseを使用することで、JSON文字列をオブジェクトへ変換することができます。
JSON文字列の状態では、プロパティにアクセスすることはできませんが、オブジェクトへ変換することでプロパティにもアクセスすることができるようになります。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away