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)

参考:

Error: “JSON must represent an object type” when parsing array of objects – Game Development Stack Exchange

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

Json.NET の基本的な使い方 | @Subaru

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 スクリプトリファレンス [公式]

参考:

JsonUtility の罠 | うにてぃブログ

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 fields – 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」パッケージを追加する。

手順
  1. パッケージマネージャーを開き、左上のプラスアイコン をクリックして、「Add Package by Name」を選択する。
  2. 「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**

リポジトリ:

jilleJr/Newtonsoft.Json-for-Unity: Newtonsoft.Json / Json.NET for Unity IL2CPP Builds, Available via Unity Package Manager – GitHub

Simple JSON

リポジトリ:

Bunny83/SimpleJSON: A Simple JSON Parser in C# – GitHub

Save Manager

参考:

PlayerPrefs を使わないセーブ/ロード処理の作り方 | Unity でゲームを作ろう!

ハイスコアのセーブ処理の作り方 | Unity でゲームを作ろう!

JSON を使ったセーブ/ロード処理の作り方 | くろくまそふと

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Protected by reCAPTCHA