主題

[Unity] 使用 Newtonsoft Json 解決 JsonUtility 無法序列化自訂類別問題

[桐生會]永和豆漿 | 2021-06-21 03:56:01 | 巴幣 110 | 人氣 209

目標: 使用 Newtonsoft Json 來解決 Unity 內建的 JsonUtility 無法序列化自訂類別的問題                   

20210621 編輯: 有些好像用 [System.Serializable] 就可以解決,所以乾脆直接來測試相容性/可用性
測試結果可以到這篇文章看看 : 文章連結

1. 問題
.自訂類別
.輸出自訂類別
.預期結果
.實際結果
2. 環境
3. 程式碼
.使用
.位置
.方法
.實作
4. 結果
5. 小記

1. 問題
.自訂類別
public class jsontest
{
    public string s1;
    public int i1;
    public c1 e1;
}

public class c1
{
    public string s2;
    public string s3;
}

public jsontest jt = new jsontest
    {
        s1 = "string1",
        i1 = 123,
        e1 = new c1
        {
            s2 = "string 2",
            s3 = "string 33"
        }
    };
.輸出自訂類別
Debug.Log(JsonUtility.ToJson(jt, true));
.預期結果
{
  "s1": "string1",
  "i1": 123,
  "e1": {
    "s2": "string 2",
    "s3": "string 33"
  }
}
.實際結果
{
    "s1": "string1",
    "i1": 123
}
2. 環境
Windows 10
Unity 2021.1.12f1
3. 程式碼
.使用
"com.unity.nuget.newtonsoft-json": "2.0.0"
.位置
[專案資料夾]\Packages\manifest.json
.方法
將程式碼加進 [dependencies] 結構欄位內。
///注意/// 加進去後要注意前後是否需要補 [,]
.實作
4. 結果
5. 小記
.沒有測過除了 "2.0.0" 的其他版本
.沒記錯的話,較舊的(2019之前)版本需要重開 Unity Editor
.明明那麼好用的東西, Unity 怎麼沒有在 Package Manager 裡面出現呢?
加入前
加入後

創作回應

更多創作