我有一個帶有 [System.Serializable] 標簽的結構,看起來像這樣:
[Serializable]
public struct User
{
public string name;
}
我想添加一個 experiments 屬性Dictionary<string, string>。我不能使它成為另一個 Serializable 結構,因為它動態變化(在后端)并且鍵也包含-s。
但是,執行以下操作會使它experiments始終反序列化為null. 我也嘗試過使用一種IDictionary型別。
[Serializable]
public struct User
{
public string name;
public Dictionary<string, string> experiments;
}
我已經確認服務器正在發送這個 json:
{
"name": "Bob",
"experiments": {
"experiment-3532": "control"
}
}
FWIW,這就是我使用結構的方式
public IEnumerator GetUser(Action<User> callback, Action<string> errorCallback)
{
string url = "https://myurl.com/myurl/"; // fake endpoint
UnityWebRequest request = UnityWebRequest.Get(url);
request.SetRequestHeader("Content-Type", "application/json");
request.SetRequestHeader("Version", Application.version);
yield return request.SendWebRequest();
if (request.error == null)
callback(JsonUtility.FromJson<User>(request.downloadHandler.text));
else
errorCallback("Uh oh! Network error");
request.Dispose();
}
uj5u.com熱心網友回復:
從我在FromJson檔案中看到的:
物件的欄位必須具有序列化程式支持的型別。[..]僅支持普通類和結構
不支持詞典。還要檢查這個答案。在使用 JSON 時,我發現自己對JSON.Net很滿意。它是最常用的庫之一,可能是您的首選。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/533587.html
標籤:C#unity3d
下一篇:如何立即跳過/完成協程?
