В результате получается строка JSON , а не XML
{
"coord":{
"lon":-118.24,
"lat":34.05
},
"weather":[
{
"id":800,
"main":"Clear",
"description":"clear sky",
"icon":"01d"
}
],
"base":"stations",
"main":{
"temp":290.19,
"pressure":1027,
"humidity":17,
"temp_min":288.15,
"temp_max":292.55
},
"visibility":16093,
"wind":{
"speed":1.27,
"deg":20.0024
},
"clouds":{
"all":1
},
"dt":1548269880,
"sys":{
"type":1,"id":3694,
"message":0.0038,
"country":"US",
"sunrise":1548255306,
"sunset":1548292515
},
"id":5368361,
"name":"Los Angeles",
"cod":200
}
Если вы хотите получить доступ только к одному или нескольким значениям этого JSON, вам следует использовать SimpleJSON (просто поместите все необходимые сценарии где-нибудь в вашем Assets
) и выполните что-то вроде
var N = JSON.Parse(www.text);
var weather = N["weather"];
, и, поскольку weather
является массивом ([...]
), обращайтесь к отдельным значениям, например, например:
var id = weather[0]["id"];
Осторожно, потому что этот SimpleJson «скрывает» неверные индексы и строки, просто возвращая null
вместо того, чтобы вызывать исключение.Это иногда затрудняет отладку (но также может быть изменено в коде кода класса JSON).
Существует также, например, Unity's JsonUtility
, но для этого требуется, чтобыВы реализуете весь класс, который представлен строкой JSON.Если вам не нужны все значения, это может привести к большим издержкам при работе с огромными JSON.
Однако, если они вам нужны (при условии простых типов здесь нет enum
и т. Д.):
[Serializable]
public class JsonData
{
public Coord coord;
public Weather[] weather;
public string base;
public Main main;
public int visibility;
public Wind wind;
public Clouds clouds;
public int dt;
public Sys sys;
public int id;
public string name;
public int cod;
}
[Serializable]
public class Coord
{
public float lon;
public float lat;
}
[Serializable]
public class Weather
{
public int id;
public string main;
public string description;
public string icon;
}
[Serializable]
public class Main
{
public float temp;
public int pressure;
public int humidity;
public float temp_min;
public float temp_max;
}
[Serializable]
public class Wind
{
public float speed;
public float deg;
}
[Serializable]
public class Clouds
{
public int all;
}
[Serializable]
public class Sys
{
public int type;
public int id;
public float message;
public string country;
public int sunrise;
public int sunset;
}
, а затем
var wholeData = JsonUtility.FromJson<JsonData>(www.text);
var weather = wholeData.weather;
var id = weather.id;