Почему мои данные JSON неправильно десериализованы с помощью Unitys JsonUtility? - PullRequest
0 голосов
/ 03 ноября 2019

Я хочу получить доступ к позиции МКС в реальном времени, но десериализация с помощью 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);
}

Это мой класс МКС:

[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

Хотя вместо «Null» он должен дать мне имя «iss». Мне любопытно, почему это не работает. Спасибо за вашу помощь!

Ответы [ 2 ]

0 голосов
/ 04 ноября 2019

В итоге я импортировал JsonDotNet из AssetStore. В своем сценарии я добавил:

using Newtonsoft.Json;

и заменил

JsonUtility.FromJson<ISS>(jsonString)

на функцию десериализации из JsonDotNet:

JsonConvert.DeserializeObject<ISS>(jsonString);

Это заставило его работать.

0 голосов
/ 03 ноября 2019

Пожалуйста, преобразуйте объект класса в JSON и измените его, чтобы выявить проблему. Я дал решение для сети. Пожалуйста, попробуйте это https://docs.unity3d.com/Manual/JSONSerialization.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...