【发布时间】:2020-07-09 12:40:36
【问题描述】:
我正在统一编写一个 C# 脚本来获取玩家所在位置的天气。 我几乎完成了,我所要做的就是从天气 API 返回的 JSON 文件中提取数据。我正在使用 SimpleJSON 来读取和提取 JSON。 JSON 看起来像这样:
{
"coord": {
"lon": (floating point number),
"lat": (floating point number)
},
"weather": [
{
"id": 804,
"main": "Clouds",
"description": "overcast clouds",
"icon": "04n"
}
],
"base": "stations",
"main": {
"temp": 292.01,
"feels_like": 292.12,
"temp_min": 291.15,
"temp_max": 293.15,
"pressure": 1018,
"humidity": 72
},
"visibility": 9000,
"wind": {
"speed": 1.5,
"deg": 130
},
"clouds": {
"all": 100
},
"dt": 1594239812,
"sys": {
"type": 1,
"id": 1308,
"country": "COUNTRY-CODE",
"sunrise": 1594178675,
"sunset": 1594235893
},
"timezone": 7200,
"id": 2954172,
"name": "CITY",
"cod": 200
}
我需要访问“天气”数组中的“描述”。但是我不知道如何让它工作。 这是我的 C# 代码:
var PARSED_JSON_2 = JSON.Parse(JSON_DATA_2);
var weather_description = PARSED_JSON_2["weather"][2]; //returns null
//I also tried something like this:
var weather_description = PARSED_JSON_2["weather"]["description"][2]; //returns null
var weather_description = PARSED_JSON_2["weather"]["description"][2].Value; //Returns nothing.
Debug.Log 会显示一个空字符串。
我尝试在此处遵循此参考:http://wiki.unity3d.com/index.php/SimpleJSON
(简而言之,我需要访问 JSON 数组中的一个元素,但我不知道如何访问。感谢任何帮助。)
【问题讨论】:
-
需要用 SimpleJSON 来完成吗?或者您可以使用任何其他第三方库吗?
-
我在 linux 上,所以我的选择并不丰富。到目前为止,我发现 SimpleJSON 效果最好,但是如果您有建议,我也会尝试一下。只要我能弄清楚如何访问json文件的“天气”数组中的元素“描述”。
-
您可以创建 C# 类并将其反序列化为 C# 对象。您可以根据需要更新字段
-
我会建议使用Newtonsoft(我不知道它是否适用于Linux),或者你可以使用我的JsonManager(github.com/EricBatlle/SimpleUnityUtils/tree/master/Assets/…)
-
@Lotan 它是跨平台的/它是否与统一工作?我的目标是制作这个跨平台,主要针对移动设备。哦,大声笑。我收回了 - 刚刚看到使用 UnityEngine;