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

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

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

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

JSON

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

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

Q&A

0回答

2194閲覧

Unity 複数のjsonデータをマージするには。

TALOS

総合スコア7

C#

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

JSON

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

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

0グッド

0クリップ

投稿2021/03/02 16:31

編集2022/01/12 10:55

前提・実現したいこと

こんにちは。Unity初心者です。読み込んだ二つのjsonデータを統合したいのですが、テキストの結合が出来ず困っています。
方法としては、jsonパスを取得→jsonに格納されたテキストを取得→それらを統合
という流れを想像しています。

例えば
JSONファイルは、中身にはテキストで日付や名前などが入った情報が配列として格納されています。
例えばjsonファイル1 {"logDatas":[
{"data":"2021/02/01 10:01:36","name":"test1"},{"data":"2021/02/01 18:00:26","name":"test1"}
]}

jsonファイル2 {"logDatas":[
{"data":"2021/02/02 19:00:00","name":"test2"}
]}

これらをスクリプトを使ってマージしたいと考えております。

よろしくお願い致します。

該当のソースコード

private async void Start() { //var path = Application.streamingAssetsPath + "/LifeLog/Monthly/Log202102.json"; string jsonString = Application.persistentDataPath + "/LifeLog/Monthly/Log202101.json"; string jsonString2 = Application.persistentDataPath + "/LifeLog/Monthly/Log202102.json"; var AddJson = File.ReadAllText(jsonString2); #if UNITY_ANDROID // Androidの場合はSystem.IOで直接ファイルとしてロードすることができないため、UnityWebRequestを用いる var request = UnityWebRequest.Get(jsonString); // 注:標準ではawaitできないので何らか対応する必要がある await request.SendWebRequest(); var jsonText = request.downloadHandler.text; #else var jsonText = File.ReadAllText(path); #endif MonthlyLog jsonData = new MonthlyLog(); JsonUtility.FromJsonOverwrite(jsonText, jsonData);

試したこと

上記のテキストを
string jsonString = Application.persistentDataPath + "/LifeLog/Monthly/Log202101.json";
string jsonString2 = Application.persistentDataPath + "/LifeLog/Monthly/Log202102.json";

のようにパス読み込みしました。その後、これら二つをマージしたく、デバッグでそれぞれの配列が入った中身が表示されるところまでは作りました。

これら二つを統合させ、一番下にある JsonUtility.FromJsonOverwrite(jsonText, jsonData);に代入することで、二つのjsonをマージできると考えています。

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

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

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

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

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

hoshi-takanori

2021/03/02 17:31

2 つの JSON データはどのような形式で、どのようにマージしたいのでしょうか?
TALOS

2021/03/03 02:41 編集

こんにちは。ご質問ありがとうございます。JSONデータはJSONファイルで、中身にはテキストで日付や名前などが入った情報が配列として格納されています。 例えばjsonファイル1 {"logDatas":[ {"data":"2021/02/01 10:01:36","name":"test1","data":"2021/02/01 18:00:26","name":"test1"} ]} jsonファイル2 {"logDatas":[ {"data":"2021/02/02 19:00:00","name":"test2"} ]} これらをスクリプトを使ってマージしたいと考えております。 よろしくお願い致します。
hoshi-takanori

2021/03/02 18:25

jsonファイル1 {  "logDatas":[   {"data":"2021/02/01 10:01:36","name":"test1"},   {"data":"2021/02/01 18:00:26","name":"test1"}  ] } と jsonファイル2 {  "logDatas":[   {"data":"2021/02/02 19:00:00","name":"test2"}  ] } をマージして {  "logDatas":[   {"data":"2021/02/01 10:01:36","name":"test1"},   {"data":"2021/02/01 18:00:26","name":"test1"},   {"data":"2021/02/02 19:00:00","name":"test2"}  ] } にしたいということなら、ちゃんと JSON データとして読み込んでマージする必要があるかと。 ちなみに、Unity よく分かりませんが、JsonUtility.FromJson や JsonUtility.FromJsonOverwrite は、JSON から C# オブジェクトのプロパティに読み込むものでは。
Zuishin

2021/03/02 22:43

date では?
退会済みユーザー

退会済みユーザー

2021/03/02 23:11

質問本文の「jsonファイル1」が間違っています。訂正してください。
TALOS

2021/03/03 02:41

ご指摘ありがとうございます。修正&追記しました。 上記のテキストを string jsonString = Application.persistentDataPath + "/LifeLog/Monthly/Log202101.json"; string jsonString2 = Application.persistentDataPath + "/LifeLog/Monthly/Log202102.json"; のようにパス読み込みしました。
退会済みユーザー

退会済みユーザー

2021/03/03 02:50

そこではなくて、質問本文に書いてある、 > {"logDatas":[ {"data":"2021/02/01 10:01:36","name":"test1","data":"2021/02/01 18:00:26","name":"test1"} ]} は以下の間違いではないかと言ってます。 {"logDatas":[ {"data":"2021/02/01 10:01:36","name":"test1"}, {"data":"2021/02/01 18:00:26","name":"test1"} ]}
TALOS

2021/03/03 02:56

大変失礼しました。修正しました。Jsonの本テキスト自体は、SurferOnWww様のご指摘のような書き方になっていたので、データ自体はしっかり通っております。 データの受信を確認した上で、Jsonを一つずつ読み込ませると、個別では認識しますが 2つ同時に読み込ませることができないので、今回マージをしようという考えになりました。 よろしくお願い致します。
退会済みユーザー

退会済みユーザー

2021/03/03 02:56

> 一番下にある JsonUtility.FromJsonOverwrite(jsonText, jsonData);に代入することで、二つのjsonをマージできると考えています。 Unity は触ったこともないのでハズレかもしれませんが、ググってみるとそのメソッドは名前の通り上書きするもののようでマージという目的には合わないようです。 単純に jsonString, jsonString2 を文字列として扱ってマージするか、それらを一旦 C# のオブジェクトにデシリアライズしてから C# のコードでマージして、そのマージ結果を JSON にシリアライズするということではいかが?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問