JSONの種類について

このQ&Aのポイント
  • 「JSON」の種類について詳しく教えてください。
  • 提供されたデータはJSON形式であります。
  • JSONデータを作成する方法について教えてください。
回答を見る
  • ベストアンサー

JSONの種類について

「JSON」の種類について教えてください。 下記データは、JSONでしょうか? もし、「JSON」だとしたら、「JSON」の中のどういう種類に該当するのでしょうか? また、もし「JSON」ではないとしたら、どうしたら「JSON」データになるのでしょうか? [{  "id": 1,  "user_id": 2,  "comment": "お天気",  "level": 2,  "created_at": "2011-03-02 12:54:46",  "modified": null }, {  "id": 2,  "user_id": 3,  "comment": "お菓子",  "level": 4,  "created_at": "2011-05-03 15:28:44",  "modified": null }, {  "id": 33,  "user_id": 4,  "comment": "お手",  "level": 3,  "created_at": "2011-06-30 04:37:36",  "modified": null }]

  • re999
  • お礼率61% (476/777)

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.2

JSONデータというより、「JSONデータの配列」ですね。個々の配列要素である、 {"id": 1, "user_id": 2, "comment": "お天気", "level": 2, "created_at": "2011-03-02 12:54:46", "modified": null } が、JSONです。 >  http://www.shancarter.com/data_converter/ >・JSON - Properties >・JSON - Column Arrays >・JSON - Row Arrays >これって、何が違うのでしょうか? 見てわからない人に説明するのは難しい。縦書きか、横書きかみたいな物かな。 それぞれの名前のJSON形式があるというのでは無くて、JSONを使って元のデータをどのように表現するかという表現の仕方を書いてある。

re999
質問者

お礼

>JSONデータというより、「JSONデータの配列」ですね。個々の配列要素である、 >{"id": 1, "user_id": 2, "comment": "お天気", "level": 2, "created_at": "2011-03-02 12:54:46", "modified": null } >が、JSONです。 なるほど、逆なんですね >縦書きか、横書きかみたいな物かな。 >それぞれの名前のJSON形式があるというのでは無くて、JSONを使って元のデータをどのように表現するかという表現の仕方を書いてある 何となくイメージできました。後は、もう少し自分で考えてみます 説明、大変分かりやすかったですー

その他の回答 (2)

  • Chaire
  • ベストアンサー率60% (79/130)
回答No.3

RFC 4627 を見て下さい。  JSON-text = object / array とあります。つまり、JavaScript における object 初期化子 { .... } または array 初期化子 [ .... ] で始まるデータを JSON と呼んでいるのです。 ただし、object については、名前を二重引用符で囲まねばならないこと、値として使えるのは数値・文字列・真偽値・null そして object と array だけであるのはご存知だと思います。 JSON は単なる構造化データに過ぎません。それにどんな「種類」があるかは、別の応用規定が定めます。JSON Schema、JSON Hypertext、RDF/JSON など。ちょうど XML と XHTML の関係と同じです。

参考URL:
http://tools.ietf.org/html/rfc4627.html
re999
質問者

お礼

回答ありがとうございます。 リンク先、初めて知りました。 リファレンスというか、JSON仕様は何に基づいているのか、についても知りたかったので、 大変参考になりましたー

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.1

はい,JSONです。 > 「JSON」の中のどういう種類に該当するのでしょうか? そういう分類の仕方を私は知りません。JSONの中をどういう種類に分類する考え方があるというのか,逆にお聞きしたいです。 [] が配列で,{} がオブジェクトだという,JavaScriptにおけるデータの書式を質問しているのではないのですよね?

re999
質問者

補足

回答ありがとうございます。 実は、CSV→JSONへデータ変換しようとした際、 プルダウン内のJSON項目が分かれていたため、 疑問に思ったのが、質問したきっかけです。 ▽Mr. Data Converter   http://www.shancarter.com/data_converter/ ・JSON - Properties ・JSON - Column Arrays ・JSON - Row Arrays これって、何が違うのでしょうか? >JavaScriptにおけるデータの書式を質問しているのではないのですよね? こちらについても、データ書式自体がよく分かっていないので教えてください 下記ページに掲載されているJSONサンプルだと、 ・配列 ・ハッシュ ・ハッシュと配列 となっているのですが、 それでいくと「質問例」は、 「配列の中がハッシュで構成されているJSON」ということになるのでしょうか? ▽これでできる! クロスブラウザJavaScript入門:第11回 JSONP入門|gihyo.jp … 技術評論社   http://gihyo.jp/dev/serial/01/crossbrowser-javascript/0011?page=1

関連するQ&A

  • JSONデータ登録について

    --------JSONデータ-------- {"vois":[ { "id" : "1FZ3P4ACUWBBC-2010061010321", "created_at" : "Thu Jun 10 01:32:13 +0000 2010", "text" : "つぶやきの本文", "user" : { "id" : "1FZ3P4ACUWBB", "screen_name" : "Becky", "profile_image_url" : "http://profile.img.mixi.jp/photo/user/1FZ3P4ACUWBBC_301280930.jpg", "url" : "http://mixi.jp/show_friend.pl?uid=1FZ3P4ACUWBB" }, "reply_count" : "3", "favorite_count" : "5" }, { "id" : "1FZ3P4ACUWBBC-2010061010322", "created_at" : "Thu Jun 10 02:32:13 +0000 2010", "text" : "つぶやきの本文2", "user" : { "id" : "1FZ3P4ACUWBa", "screen_name" : "ecky", "profile_image_url" : "http://profile.img.mixi.jp/photo/user/1FZ3P4ACUWBBC_301280931.jpg", "url" : "http://mixi.jp/show_friend.pl?uid=1FZ3P4ACUWBa" }, "reply_count" : "4", "favorite_count" : "5" } ] } 上記のJSONデータを取得した場合 MySQLに登録するPHPプログラムはどのようになるのでしょうか。

    • ベストアンサー
    • PHP
  • JSON多次元オブジェクト(?)を配列へ変換したい

    ・下記のようなJSON多次元オブジェクト(?)を配列へ変換したいのですが、どうすれば良いでしょうか? ・json_decode試したけどうまくいきませんでした ・出来れば、data以下だけを配列で取得したいです array(1) { [0]=> string(1284) {"version":1,"req_id":null,"error":null,"data":[ {"name":"Sad","j_title":"A","id":"23","thumb":"hoge1","date":"2009","title":"Ch","url":"hoge2"}, {"name":"Wil","j_title":"r","id":"30","thumb":"hoge3","date":"2013","title":"Po","url":"hoge8"} ]} [1]=> string(1282) {"version":1,"……

    • ベストアンサー
    • PHP
  • MySQL insert文に関するエラーについて

    ○質問の主旨 MySQLのデータベースにテーブルを作ってinsert文で データを追加しようとするとシンタックスエラーが出ます。 SQL文が間違っているのかと思いGoogle検索や本で調べたりしましたが、 なぜ文法エラーが発生するのか分かりません。 エラーと対処方法をご存知の方がいらっしゃいましたらご教示願います。 ○質問の補足 // usersテーブル create table users ( id int not null auto_increment primary key, created datetime not null, modified datetime not null, username varchar(255), password varchar(40) ); desc users; +----------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | created | datetime | NO | | NULL | | | modified | datetime | NO | | NULL | | | username | varchar(255) | YES | | NULL | | | password | varchar(40) | YES | | NULL | | +----------+--------------+------+-----+---------+----------------+ insert into users (created, modified, username, password) values (now(), now(), 'test1', 'test1'), (now(), now(), 'test2', 'test2') ); ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 3

    • ベストアンサー
    • MySQL
  • SQLで、アクセス集計について困っています。

    アクセス集計について困っています。 mysql> desc access_log; +------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+-------------+------+-----+---------+----------------+ | id | bigint(20) | NO | PRI | NULL | auto_increment | | user_id | varchar(50) | YES | | NULL | | | ip | varchar(15) | YES | | NULL | | | created_at | datetime | NO | | NULL | | | updated_at | datetime | NO | | NULL | | +------------+-------------+------+-----+---------+----------------+ 5 rows in set (0.02 sec) mysql> select * from access_log; +----+---------+-----------+---------------------+---------------------+ | id | user_id | ip | created_at | updated_at | +----+---------+-----------+---------------------+---------------------+ | 1 | admin | 127.0.0.1 | 2010-11-13 21:56:54 | 2010-11-13 23:07:27 | | 2 | admin | 127.0.0.1 | 2010-11-13 21:56:54 | 2010-11-13 23:07:27 | | 3 | admin | 127.0.0.1 | 2010-11-14 21:56:54 | 2010-11-13 23:07:27 | | 4 | admin | 127.0.0.1 | 2010-11-14 21:56:54 | 2010-11-13 23:07:27 | | 5 | admin | 127.0.0.1 | 2010-11-15 21:56:54 | 2010-11-13 23:07:27 | +----+---------+-----------+---------------------+---------------------+ 5 rows in set (0.00 sec) 上記のように定義したテーブルがあります。 SELECT a.id, a.user_id, COUNT(*), DATE(a.created_at) AS date FROM access_log a WHERE (a.user_id = 'admin' AND a.created_at > '2010-11-01 00:00:00' AND a.created_at < '2010-11-29 23:59:59') GROUP BY date ORDER BY a.created_at; のようにして日別のアクセス数の集計をしています。 ここから、同じ日の同一IPのアクセスは1アクセスとして計算したいのですが、 どのようにSQLを書けばよいでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • ORDER BYでカラムの値があれば指定したい

    <前提> ・created_at 登録日時カラム … 必ず値がある ・modified 更新日時カラム … nullの場合もある この時、更新日時カラムの値があれば、更新日時カラムを選択、 更新日時カラムがnullなら、登録日時カラムを選択した状態で、 降順表示させたいのですが、どうすれば良いでしょうか? やりたいのは、こんな感じです ORDER BY 更新日時カラムの値があれば、modified 更新日時カラムがnullなら、created_at DESC

    • ベストアンサー
    • MySQL
  • CakePHPのブログチュートリアルについて

    PHPフレームワークのCakeについて、質問させてください。 初心者ならだれもが一度は試すであろうhttp://book.cakephp.org/ja/view/219/Blogに掲載されているブログチュートリアルですが、下記環境で実行すると大量のエラーが出力されます。(添付画像参照) 環境:hetemlレンタルサーバー Apache 2.0.xx ver 4.4.2 ※CakePHPのトップページが正常に表示されること、tmpフォルダのパーミッションは正常に設定されていることは確認しています。 また、Viewで正常にデータを取得できているにもかかわらずデータ表示部分でエラーが表示されるため、変数$postsをvar_dumpしたところ、 Array ( [0] => Array ( [id] => Array ( [id] => 1 ) [title] => Array ( [title] => タイトル ) [body] => Array ( [body] => これは、記事の本文です。 ) [created] => Array ( [created] => 2009-08-08 21:56:50 ) [modified] => Array ( [modified] => ) ) [1] => Array ( [id] => Array ( [id] => 2 ) [title] => Array ( [title] => またタイトル ) [body] => Array ( [body] => そこに本文が続きます。 ) [created] => Array ( [created] => 2009-08-08 21:56:50 ) [modified] => Array ( [modified] => ) ) [2] => Array ( [id] => Array ( [id] => 3 ) [title] => Array ( [title] => タイトルの逆襲 ) [body] => Array ( [body] => こりゃ本当に面白そう!うそ。 ) [created] => Array ( [created] => 2009-08-08 21:56:50 ) [modified] => Array ( [modified] => ) ) ) となっていました。 これでは、チュートリアルに掲載されている、 <?php echo $post['Post']['id']; ?> ではなく、 <?php echo $post['id']['id']; ?> で呼び出さなくてはならなくなります。 これはどこかがおかしいのでしょうか?教えてください。

    • 締切済み
    • PHP
  • 助けて>< 3つのテーブルで簡単な集計

    下記のような3種類のテーブルがあります。 これを集計して、指定したユーザーの指定月のアクセス日時と売上げ金額を表にしたいと思っています。 こんな感じに。 +--+--------+----------+-------+-----+ | id | username| date   | access | sales | +--+--------+----------+-------+-----+ | 1 | admin | 2010-11-13 |   2 | 5000 | | 1 | admin | 2010-11-14 |   2 | 5000 | | 1 | admin | 2010-11-15 |  1 | 20000 | +--+--------+----------+-------+-----+ SELECT u.id AS id, u.username, DATE(a.created_at) AS date, COUNT(*) AS access, SUM(s.amount) AS sales FROM sf_guard_user u INNER JOIN sales s ON u.username = s.user_id LEFT JOIN access_log a ON u.username = a.user_id WHERE (u.username = 'admin' AND a.created_at > '2010-11-01 00:00:00' AND a.created_at < '2010-11-30 23:59:59') GROUP BY date ORDER BY a.created_at; とやってみたのですがダメでした;; ■ユーザー情報テーブル mysql> select id,username from user; +--+---------+ | id | username | +--+---------+ | 1 | admin   | +--+---------+ ■アクセスログテーブル mysql> select * from access_log; +--+-------+--------+------------------+ | id | user_id | ip     | created_at      | +--+-------+--------+------------------+ | 1 | admin  | 127.0.0.1 | 2010-11-13 21:56:54 | | 2 | admin  | 127.0.0.1 | 2010-11-13 21:56:54 | | 3 | admin  | 127.0.0.1 | 2010-11-14 21:56:54 | | 4 | admin  | 127.0.0.1 | 2010-11-14 21:56:54 | | 5 | admin  | 127.0.0.1 | 2010-11-15 21:56:54 | +--+-------+--------+------------------+ ■売上げ金額テーブル mysql> select * from sales; +--+-------+------+------------------+ | id | user_id | amount| created_at      | +--+-------+------+------------------+ | 1 | admin  |  5000 | 2010-11-13 21:56:54 | | 2 | admin  |  5000 | 2010-11-14 21:56:54 | | 3 | admin  |  5000 | 2010-11-15 21:56:54 | | 4 | admin  |  5000 | 2010-11-15 21:56:54 | +--+-------+------+------------------+

    • ベストアンサー
    • MySQL
  • jsonとcheckboxでの料金計算について

    jqueryを利用して、簡単な料金シュミレーションを作っています。 主な料金については、計算が出来たのですが、 オプションの料金について、オプション項目と料金をjsonファイルにまとめておき、 checkboxの選択によってオプション料金を足し算したいのです。 具体的には、下記のようなjsonファイルがあるとします。 "opts": { "option1" : { "1d": 0, "w": 0, "m": 0 }, "option2" : { "1d": 1620, "w": 8316, "m": 14904 }, "option3": { "1d": 540, "w": 3240, "m": 3240 }, "option4": { "1d": 540, "w": 3240, "m": 3240 }, "option5" : { "1d": 540, "w": 1620, "m": 5400 } } checkboxは下記のようになっています。 <input id="option1" type="checkbox" value="option1" name="opts"> <input id="option2" type="checkbox" value="option2" name="opts">  ・  ・ <input id="option5" type="checkbox" value="option5" name="opts"> checkboxが選択されたら、該当する値をjsonから取得して足し算をすることは 出来ますでしょうか? ご教授宜しくお願いいたします。

  • MySQLでエラーがでます

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"8cb2237d0679ca88db6464eac60da96345513964", created"2011-10-05 15:16:04"' at line 1 PHPをブラウザで開いて動作確認すると上記のようにエラーがでてしまいます。 dbはこんな感じで作りました。 CREATE TABLE `class_orms`.`members` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `name` VARCHAR( 255 ) NOT NULL , `email` VARCHAR( 255 ) NOT NULL , `password` VARCHAR( 100 ) NOT NULL , `created` DATETIME NOT NULL , `modified` TIMESTAMP NOT NULL ) ENGINE = MYISAM ; CREATE TABLE `class_orms`.`posts` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `message` TEXT NOT NULL , `member_id` INT NOT NULL , `reply_post_id` INT NOT NULL , `created` DATETIME NOT NULL , `modified` TIMESTAMP NOT NULL ) ENGINE = MYISAM ; SQL側の1行目でエラーがあるということなのでしょうか? どなたか回答よろしくお願いします。 動作環境------------------- Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 phpMyAdmin バージョン情報: 3.2.4

    • ベストアンサー
    • MySQL
  • jQueryの$.getJSONでデータを渡したい

    jQueryの$.getJSONでデータを渡したいのですが、 うまくいきません。 test.js {  "users": [   {    "name": "aoki",    "code": "0001"   },   {    "name": "ueno",    "code": "0002"   }  ] } 読み込む側 $.getJSON("test.js", { "name": "John", "code": "0003" }, function(json){  alert("JSON Data: " + json.users[0].name);  alert("JSON Data: " + json.users[1].name);  alert("JSON Data: " + json.users[2].name); }); { "name": "John", "code": "0003" }を渡しているのだから、 json.users[2].nameで、"John"が取得できると思ったのですが、 「'users.2.name' は Null またはオブジェクトではありません。」エラーになります