【问题标题】:Why is my JSON-Data not deserialized correctly with Unitys JsonUtility?为什么我的 JSON 数据没有使用 Unitys JsonUtility 正确反序列化?
【发布时间】:2019-11-03 11:56:33
【问题描述】:

我想访问 ISS 的实时位置,但使用 JsonUtility.FromJson 反序列化会得到空值。

UnityWebRequest www = UnityWebRequest.Get("https://api.wheretheiss.at/v1/satellites/25544");
yield return www.SendWebRequest();

if (www.isNetworkError || www.isHttpError) {
   Debug.Log(www.error);
}
else {
   string jsonString = www.downloadHandler.text;
   Debug.Log(jsonString);
   ISS issData = JsonUtility.FromJson<ISS>(jsonString);
   Debug.Log(issData.name);
}

这是我的 ISS 课程:

[System.Serializable]
public class ISS
{
    public string name { get; set; }
    public int id { get; set; }
    public double latitude { get; set; }
    public double longitude { get; set; }
    public double altitude { get; set; }
    public double velocity { get; set; }
    public string visibility { get; set; }
    public double footprint { get; set; }
    public int timestamp { get; set; }
    public double daynum { get; set; }
    public double solar_lat { get; set; }
    public double solar_lon { get; set; }
    public string units { get; set; }
}

Debug.Log 为我提供以下信息:

{"name":"iss","id":25544,"latitude":-51.26475894394,"longitude":70.742077900276,"altitude":430.55414597218,"velocity":27557.250778742,"visibility":"daylight","footprint":4560.7731250695,"timestamp":1572781486,"daynum":2458790.9894213,"solar_lat":-15.053235454665,"solar_lon":359.70413044191,"units":"kilometers"}

Null

虽然它应该给我的名字是“iss”,而不是“Null”。我很好奇为什么这不起作用。感谢您的帮助!

【问题讨论】:

    标签: c# json unity3d


    【解决方案1】:

    请将类对象转换为 JSON 并从同一对象反转以识别问题。我已经给出了网络的解决方案。请试试这个https://docs.unity3d.com/Manual/JSONSerialization.html

    【讨论】:

    • 不幸的是,这不起作用。我仍然在 Debug.Log 中得到“Null”
    【解决方案2】:

    我最终从 AssetStore 导入了 JsonDotNet。在我的脚本中我添加了:

    using Newtonsoft.Json;

    并替换

    JsonUtility.FromJson&lt;ISS&gt;(jsonString)

    使用来自 JsonDotNet 的反序列化函数:

    JsonConvert.DeserializeObject&lt;ISS&gt;(jsonString);

    这使它起作用了。

    【讨论】:

      猜你喜欢
      • 2011-05-18
      • 1970-01-01
      • 2019-08-21
      • 2019-04-06
      • 1970-01-01
      • 1970-01-01
      • 2019-10-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多