2

Having a structure for nested json file as nested classes, when I write into json, always the json is empty.

public class Class1
{
    public int level;
    public float timeElapsed;
    public string playerName;
    public Class2 subClass;


}

public class Class2
{
    public int age;
}

Class2 class2= new Class2();
class2.age = 99;

Class1 myObject = new Class1();
myObject.level = 1;
myObject.timeElapsed = 47.5f;
myObject.playerName = "Francis";
myObject.subClass = class2;

jsonString = JsonUtility.ToJson(myObject);
print(jsonString);

I am getting {"level":1,"timeElapsed":47.5,"playerName":"Francis"}, where is the age ?!

ProgrammingLlama
  • 36,677
  • 7
  • 67
  • 86
Hasoun GH
  • 43
  • 2
  • 6
  • 4
    I don't do Unity, but I found [this](https://stackoverflow.com/questions/47140672/c-sharp-unity-parse-nested-json) which suggests you need the `[Serializable]` attribute on your classes. – ProgrammingLlama Aug 06 '19 at 01:42

1 Answers1

1
using System;
using UnityEngine;

public class Example : MonoBehaviour
{
    private void Start()
    {
        Class2 class2 = new Class2();
        class2.age = 99;

        Class1 myObject = new Class1();
        myObject.level = 1;
        myObject.timeElapsed = 47.5f;
        myObject.playerName = "Francis";
        myObject.subClass = class2;

        var jsonString = JsonUtility.ToJson(myObject);
        print(jsonString);
    }
}

[Serializable]
public class Class1
{
    public int level;
    public float timeElapsed;
    public string playerName;
    public Class2 subClass;
}

[Serializable]
public class Class2
{
    public int age;
}

The result is {"level":1,"timeElapsed":47.5,"playerName":"Francis","subClass":{"age":99}}