JSON serialization helps you turn your game data into text that can be saved or sent. It makes your data easy to store and share.
JSON serialization in Unity
using UnityEngine; [System.Serializable] public class PlayerData { public string playerName; public int score; } // To convert object to JSON string: string jsonString = JsonUtility.ToJson(yourObject); // To convert JSON string back to object: PlayerData data = JsonUtility.FromJson<PlayerData>(jsonString);
The class you want to serialize must be marked with [System.Serializable].
Use JsonUtility.ToJson() to convert an object to JSON text.
PlayerData player = new PlayerData(); player.playerName = "Alex"; player.score = 100; string json = JsonUtility.ToJson(player);
string json = "{\"playerName\":\"Alex\",\"score\":100}";
PlayerData player = JsonUtility.FromJson<PlayerData>(json);This Unity script creates a player object, converts it to JSON text, prints it, then reads the JSON back into an object and prints the data.
using UnityEngine; [System.Serializable] public class PlayerData { public string playerName; public int score; } public class JsonExample : MonoBehaviour { void Start() { PlayerData player = new PlayerData(); player.playerName = "Alex"; player.score = 100; // Serialize to JSON string json = JsonUtility.ToJson(player); Debug.Log("JSON string: " + json); // Deserialize back to object PlayerData loadedPlayer = JsonUtility.FromJson<PlayerData>(json); Debug.Log($"Player name: {loadedPlayer.playerName}, Score: {loadedPlayer.score}"); } }
Only public fields are serialized by default.
Properties (get/set) are not serialized by JsonUtility.
JsonUtility works well for simple data but not complex types like dictionaries.
JSON serialization converts objects to text and back.
Use JsonUtility.ToJson() and FromJson() in Unity.
Mark classes with [System.Serializable] and use public fields.
Practice
What is the main purpose of JSON serialization in Unity?
Solution
Step 1: Understand JSON serialization
JSON serialization means turning objects into text so they can be saved or sent.Step 2: Recognize Unity's use
Unity uses JSON serialization to save object data as text and load it back.Final Answer:
Convert objects into text format and back -> Option BQuick Check:
JSON serialization = Convert objects to text and back [OK]
- Confusing serialization with 3D modeling
- Thinking it speeds up script compilation
- Assuming it optimizes performance automatically
Which of the following is the correct way to serialize an object player to JSON in Unity?
Player player = new Player();
Solution
Step 1: Identify Unity's serialization method
Unity uses JsonUtility.ToJson() to convert objects to JSON text.Step 2: Check method usage
JsonUtility.ToJson(player) correctly serializes the player object.Final Answer:
string json = JsonUtility.ToJson(player); -> Option AQuick Check:
Serialize with JsonUtility.ToJson() [OK]
- Using FromJson() instead of ToJson()
- Calling non-existent Json.Serialize() method
- Trying to call ToJson() on the object itself
Given the following code, what will be the output?
[System.Serializable]
public class Player {
public string name = "Alex";
public int score = 10;
}
Player player = new Player();
string json = JsonUtility.ToJson(player);
Debug.Log(json);Solution
Step 1: Check class serialization
The Player class is marked [System.Serializable], so it can be converted to JSON.Step 2: Understand JsonUtility.ToJson output
It converts all public fields to JSON key-value pairs, so name and score appear.Final Answer:
{"name":"Alex","score":10} -> Option AQuick Check:
Serializable class fields appear in JSON [OK]
- Forgetting [System.Serializable] attribute
- Expecting private fields to appear
- Thinking only one field is serialized
What is wrong with this code snippet for deserializing JSON into a Player object?
string json = "{\"name\":\"Sam\", \"score\":15}";
Player player = JsonUtility.ToJson(json);Solution
Step 1: Identify method misuse
JsonUtility.ToJson() is for serialization, not deserialization.Step 2: Correct method for deserialization
Use JsonUtility.FromJson<Player>(json) to convert JSON text back to Player object.Final Answer:
Using ToJson() instead of FromJson() for deserialization -> Option CQuick Check:
Deserialize with FromJson(), not ToJson() [OK]
- Mixing ToJson() and FromJson() methods
- Assuming JSON string format is wrong
- Thinking class visibility affects serialization
You want to save a list of Player objects to JSON and load them back later. Which approach correctly handles this in Unity?
Solution
Step 1: Understand Unity's JsonUtility limitation
JsonUtility cannot serialize lists directly; it needs a wrapper class.Step 2: Use a container class
Create a [System.Serializable] class with a public List<Player> field and serialize that.Final Answer:
Wrap the list in a serializable container class and serialize that -> Option DQuick Check:
Wrap lists in container class for JSON serialization [OK]
- Trying to serialize lists directly
- Concatenating JSON strings manually
- Using FromJson with generic List type
Ready to prove it?
Pass the test and this pattern moves unknown
