Во-первых, в JSON переменные в кавычках. Класс надо помечать атрибутом [System.Serializable]. Писать new GGData(); необязательно, если только делать JsonUtility.FromJson. Только что проверил:
// datafile.json
Код
{
"type": "type1",
"data": {
"token": "token1"
}
}
Код
using System.IO;
using UnityEngine;
[System.Serializable]
public class GGMessage {
public string type;
public GGData data = new GGData();
}
[System.Serializable]
public class GGData {
public string token;
public string user_id;
public string channel_id;
public string errorMsg;
public int error_num;
public string channel_name;
public string user_name;
}
public class SerializationControl1 : MonoBehaviour
{
string filePath;
void Start()
{
print(Application.persistentDataPath);
filePath = Path.Combine(Application.persistentDataPath, "datafile.json");
}
void Update()
{
if (Input.GetMouseButtonDown(1))
{
string str = File.ReadAllText(filePath);
GGMessage obj = JsonUtility.FromJson<GGMessage>(str);
print(obj.data.token);
}
}
}
По нажатию правой кнопки выводит token1.