JsonUtility
ドキュメント:
UnityEngine.JsonUtility | Unity スクリプトリファレンス [公式]
導入
参考:
JsonUtility を使った JSON 化 | nekosuko.jp
使い方
JsonUtility.ToJson
JsonUtility.FromJson
JsonUtility.FromJsonOverwrite
ドキュメント:
JSON 形式にシリアライズ | Unity 2020.3 マニュアル [公式]
参考:
JsonUtility クラスで JSON を扱う方法 | TECH PROjin
JsonUtility でオブジェクトをシリアライズしたりデシリアライズしたりする | Yucchiy’s Note
制限
Unity は多階層型 (多次元配列、ジャグ配列、辞書、ネストしたコンテナ型) のシリアライゼーションをサポートしていません。
—— Unity Manual
非対応
Dictionary
- 自動実装プロパティ
- ヌル許容値型 (Nullable)
対応
- クラス →
System.Serializable
属性を付与する - プライベート変数 →
SerializeField
属性を付与する
参考:
JsonUtility で Object を JSON 化できるパターンと出来ないパターン | KAZUPON 研究室
JsonUtility.ToJson is giving nulls to all fields – Stack Overflow
JsonUtility.FromJson returns null – Stack Overflow
配列/リスト (Array / List)
参考:
Serialize and Deserialize JSON Array – Stack Overflow
Deserializing JSON using UnityEngine.JsonUtility returns null list – Stack Overflow
JsonUtility to JSON list of base classes – Stack Overflow
EditorJsonUtility
ドキュメント:
UnityEditor.EditorJsonUtility | Unity スクリプトリファレンス [公式]
参考:
JsonUtility と EditorJsonUtility の違いをちゃんと理解する | LIGHT11
FromJson
ドキュメント:
JsonUtility.FromJson | Unity スクリプトリファレンス [公式]
参考:
How parse JSON data – Unity Forum
ファイルに保存する
参考:
JSON 形式でファイルを読み書きする | ねこじゃらシティ
JsonProperty 属性
ドキュメント:
Serializing and Deserializing JSON – Json.NET | Newtonsoft [Official]
JsonProperty Class – Json.NET | Newtonsoft [Official]
参考:
Json.NET – C# で JSON を扱う – Qiita
Json.NET – JSON を扱うライブラリを使ってみました – Qiita
JsonProperty – JSON の変数名が日本語の場合にデシリアライズする方法 | Tech and Investment
Newtonsoft.Json ライブラリの使用方法 | HIROs.NET Blog
How to set custom JSON field name for System.Serializable class? – Stack Overflow
LINQ
ドキュメント:
LINQ to JSON – Json.NET | Newtonsoft [Official]
Querying JSON with LINQ – Json.NET | Newtonsoft [Official]
System.Text.Json
ドキュメント:
System.Text.Json | Microsoft Learn [公式]
C# / .NET
ドキュメント:
JSON をシリアル化および逆シリアル化する方法 | Microsoft Learn [公式]
参考:
C# で JSON を扱う方法まとめ | DevelopersIO
比較
参考:
JSON シリアライザの基本的な使い方 | yotiky Tech Blog
オブジェクト
ドキュメント:
UnityEngine.SerializeReference | Unity スクリプトリファレンス [公式]
参考:
JSON Utility creates empty classes instead of null – Unity Forum
ヌル許容値型 (Nullable)
あれそもそもUnity本体のシリアライズ原則みたいなのを通過したあとのオブジェクトをJsonに変えるみたいなやつなんで、Unity本体のシリアライズ原則を超えられない。
—— @toru_inoue
参考:
null 許容値型変数に JsonUtility で JSON から値を読み込めない – teratail
JsonUtility can’t deserialize nullable variables – Unity Forum
JSON deserialize nullable on iOS – Unity Forum
Nullable class to JSON – Unity Forum
Can’t serialize plain struct with Nullable fields – Game Development Stack Exchange
Unity doesn’t serialize int? field – Stack Overflow
Decode JSON string – Stack Overflow
リファレンス
UnityEngine.JsonUtility | Unity スクリプトリファレンス [公式]
ドキュメント
JSON 形式にシリアライズ | Unity 2020.3 マニュアル [公式]
スクリプトのシリアル化 | Unity マニュアル [公式]
まとめ
JsonUtility の細かい10の疑問をいまさら検証した – Qiita
JSON を最初から簡単にまとめてみた | はなちるのマイノート
JSON を扱うまとめ (Unity 5.3) – Qiita
Json.NET (Newtonsoft)
Unity 2020 以降、「Version Control」 (旧 Unity Collaborate) が Newtonsoft JSON を使用しているため、標準で使用することができる。
明示的にパッケージを追加するには、パッケージマネージャーで「com.unity.nuget.newtonsoft-json
」パッケージを追加する。
手順
- パッケージマネージャーを開き、左上のプラスアイコン をクリックして、「Add Package by Name」を選択する。
- 「Name」欄に
com.unity.nuget.newtonsoft-json
を入力して「Add」ボタンを押す。
使い方
using Unity.Plastic.Newtonsoft.Json;
// ...
// Convert JSON to an Object
ExampleObject obj = JsonConvert.DeserializeObject<ExampleObject>(json);
// Convert an Object to JSON
string json = JsonConvert.SerializeObject(obj);
// ...
Code language: C# (cs)
公式サイト:
Json.NET | Newtonsoft [Official]
リポジトリ:
JamesNK/Newtonsoft.Json: Json.NET is a Popular High-Performance JSON Framework for .NET – GitHub
needle-mirror/com.unity.nuget.newtonsoft-json – GitHub
ドキュメント:
Newtonsoft Json | Unity Manual [Official]
Documentation – Json.NET | Newtonsoft [Official]
Parsing JSON – Json.NET | Newtonsoft [Official]
Creating JSON – Json.NET | Newtonsoft [Official]
What Even is AOT – Newtonsoft.Json-for-Unity Wiki – GitHub
Fix AOT Compilation Errors – Newtonsoft.Json-for-Unity Wiki – GitHub
コード:
Samples – Json.NET | Newtonsoft [Official]
参考:
Json.NET が正式に Unity 公式パッケージになったのでそちらを使おう – Qiita
Unity 2020 で Newtonsoft.Json を入れる – Qiita
アプリで Json.NET を使う | Unity Indies
Json.NET – List / Dictionary などを JSON で扱う | ひとりでのアプリ開発
Unity 公式の Newtonsoft Json と NuGet からの dll を共存させる | はなちるのマイノート
Newtonsoft Json package – Unity Forum
Newtonsoft.Json error only with Cloud Build – Unity Forum
Newtonsoft.Json works in Unity Editor but not on mobile devices – Stack Overflow
Newtonsoft.Json for Unity (jilleJr)
**DEPRECATED**
リポジトリ:
Simple JSON
リポジトリ:
Bunny83/SimpleJSON: A Simple JSON Parser in C# – GitHub
Save Manager
参考:
PlayerPrefs を使わないセーブ/ロード処理の作り方 | Unity でゲームを作ろう!