質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

1042閲覧

【Unity】JSONファイルの作成、読み取りについて【C#】

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

1クリップ

投稿2017/08/08 04:37

###前提・実現したいこと
データ作成・保存、読み取りをしたいと考えています。
保存の形式は多々あると思います。
永続利用したい、色んな種類のデータ保存をしたい、その他理由により
JSONを利用することにしました。

JSONの利用が初めての為、良く分かっておりません。
そのため質問させて頂きます。

日記とTODOリストを組み合わせたようなものを作ろうと思っています。
実現したいのは以下項目です。
・JSONファイル読み取り(無ければ新規作成)
・JSONファイル行追加

###分からないこと
・種類ごとにJSONファイルを作成したほうが良いのか
(ユーザーデータ、ゲームデータ、日記、TODOリスト、カテゴリ等)
・上記は、同じJSONファイル内に作るべきか。
・Class定義用のClass? を準備したほうが良いか。
・1つのプログラムファイルに、たくさんのClassを書き参照するのはアリか

上記になります。

###データ例
日記

JSON

1{ 2 { "id" : "1", "day" : "2017/1/1", "time" : "10:00", "title" : "あ", " body" : "あ本文", "temp1" : "画像1", "temp2" : "画像2", "category" : "日記", "tag" : "デート", }, 3 { "id" : "2", "day" : "2017/1/2", "time" : "11:00", "title" : "い", " body" : "い本文", "temp1" : "", "temp2" : "", "category" : "日記", "tag" : "朝ご飯", }, 4 { "id" : "3", "day" : "2017/1/3", "time" : "12:00", "title" : "う", " body" : "う本文", "temp1" : "画像3", "temp2" : "", "category" : "日記", "tag" : "", }, 5 { "id" : "4", "day" : "2017/1/4", "time" : "13:00", "title" : "え", " body" : "え本文", "temp1" : "画像4", "temp2" : "", "category" : "日記", "tag" : "", }, 6 { "id" : "5", "day" : "2017/1/5", "time" : "14:00", "title" : "お", " body" : "お本文", "temp1" : "", "temp2" : "", "category" : "日記", "tag" : "", }, 7};

履歴

JSON

1{ 2 { "id" : "1", "day" : "2017/1/1", "time" : "10:00", "title" : "あ", "point" : "1000", "category" : "a", "memo" : "メモ1", }, 3 { "id" : "2", "day" : "2017/1/2", "time" : "11:00", "title" : "い", "point" : "1530", "category" : "a", "memo" : "メモ2", }, 4 { "id" : "3", "day" : "2017/1/3", "time" : "12:00", "title" : "う", "point" : "2000", "category" : "b", "memo" : "メモ3", }, 5};

###試したこと

全貌が分からないため、以下参照して考えています。

[Unity] JsonUtilityについて
http://westhillapps.blog.jp/archives/47155877.html
起動時?に毎回ファイル作成しているように思います。

[UNITY5.3-]JSONでスコア保存みたいな?
http://tikuma1181.com/HPmain/?p=497
これは保存したファイルを読み込む感じがします。

(Unity)JsonUtilityを使ったデータ保存
http://pro132007.wp.xdomain.jp/unityjsonutility%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E3%83%87%E3%83%BC%E3%82%BF%E4%BF%9D%E5%AD%98/
データ保存、読み込みですが全体を見てどのように書くのか良く分かりません。

【Unity】そういえばUnityでJSONって簡単に触れるの?どうなの? 数分後「簡単なんですけどぉー!」 JsonUtilityすごいぜ!って話
http://halcyonsystemblog.blog.fc2.com/blog-entry-387.html
全てのJSONデータが切り替わってしまったのでしょうか?

###聞きたいこと
色々ごちゃごちゃ書きましたが、
・種類ごとにJSONファイルを作成したほうが良いのか
(ユーザーデータ、ゲームデータ、日記、TODOリスト、カテゴリ等)
・上記は、同じJSONファイル内に作るべきか。
・Class定義用のClass? を準備したほうが良いか。
・1つのプログラムファイルに、たくさんのClassを書き参照するのはアリ
上記が知りたいです。
JSONやプログラムについてよく理解していない(勉強不足)であることは
大変申し訳ないと思っております。
ただ、できるのか否か、どうファイル構成したら効率良いのか等
ヒントを教えて頂ければと思います!

###補足情報(言語/FW/ツール等のバージョンなど)
OS:Windows10
Unity 5.6.1f1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

種類ごとにJSONファイルを作成したほうが良いのか。

基本は「種類ごと」の方がいいでしょう。
「Keyの一覧が同一であるか?」(例で言うとid,day,time,tile,body...の部分)を基準にしましょう。
これが違うとクラスに展開する時面倒臭くなります。(というか「何を基準にどのクラスだと判別するのか?」を考える必要があります)

上記は、同じJSONファイル内に作るべきか。

ファイルではなく「同じフォルダ内に作るべきか」という質問ですかね?
それであれば「お好きなように」というのが回答になります。
JSONファイルが1種類1つなら全部同じJSONフォルダ内に入れた方が管理しやすいでしょうし、そうでないなら「JSON/Diary」のように下位フォルダを作った方が分かりやすいかもしれません。

Class定義用のClass? を準備したほうが良いか。

『そういえばUnityで〜』のページ内の「users」クラスのようなClassを指しているなら、用意しないとJsonUtilityの利点がまるで無くなります。

1つのプログラムファイルに、たくさんのClassを書き参照するのはアリか。

可読性と更新性が保てるならアリです。


【補足】
試したことで「全てのJSONデータが切り替わってしまったのでしょうか?」とありますが、
このページの例だと「JsonUtil」の「OnClickToJSON」メソッド内で
「users item = new users();」しているので、
「新たなusersクラスを作成し、そこに「はるしおん」「4」というパラメータを与え、JSON(形式の文字列)に変換した」というだけです。
全てのJSONデータが切り替わった訳ではありません。


【補足2】
「JsonUtilityは『JSON形式の文字列をクラスに変換する』『クラスをJSON形式の文字列に変換する』もの」であって、
「JSONファイルを開いたり書き込んだりするもの**"ではない"**(それはResources.LoadだったりFile.IO系命令でやる=外部ファイルの取り扱いの知識が別途必要)」
ということを押さえると理解が進むかと思います。

具体的なプログラムの使い方については、触りながら理解していくか、JSON以前に「Classとは何か」の勉強を進めた方がいいかもしれません。

投稿2017/08/08 05:53

sakura_hana

総合スコア11425

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/08/10 03:59

回答頂きありがとうございます! また返信遅れて大変申し訳ありませんでした。 Classが苦手で考えているうちにゴチャゴチャしてくるため、 もう一度Classについて学びなおしてみたいと思います。 また、頂いた回答を読んでいるうちにJSONとは何か分かってきた気がします。 あとは実際に触れて、考えていきたいと思います! 丁寧に回答頂き、ありがとうございました! また何かあった際は、よろしくお願いいたします!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問