通过 C# 在 Unity 中从 API URL 解析 JSON

Posted

技术标签:

【中文标题】通过 C# 在 Unity 中从 API URL 解析 JSON【英文标题】:Parsing JSON from API URL in Unity via C# 【发布时间】:2021-06-15 09:31:18 【问题描述】:

我正在尝试解析 JSON 数组中的一些数据,以便可以在我的项目中使用它。这些值用于绘制用于可视化轨道的函数,除了这个任务之外,我已经完成了该项目的所有内容。为了解析 JSON,我尝试使用 LitJSon,但没有运气。如果有人能提供一些关于我应该如何做到这一点的见解,将不胜感激。

这是我拥有的 JSON 格式:

网址:https://5289daa5c202.ngrok.io/api/tle

[
    
        "SatNum": "47757",
        "Epoch": "21076.58335648",
        "MMotDeriv": "-.01183622",
        "inclination": "53.0445",
        "RAAN": "118.1488",
        "Eccentricity": "0001096",
        "ArgPerigee": "64.2393",
        "MAnomaly": "229.2271",
        "MMotion": "15.76357572"
    , 
        "SatNum": "47758",
        "Epoch": "21076.83334491",
        "MMotDeriv": "-.01182939",
        "inclination": "53.0463",
        "RAAN": "116.9104",
        "Eccentricity": "0001165",
        "ArgPerigee": "60.1537",
        "MAnomaly": "211.8085",
        "MMotion": "15.75727878"
    
]

【问题讨论】:

您忽略了使用 LitJSON 添加您的尝试。请将其包含在您的问题中。 ***.com/questions/36239705/… 【参考方案1】:

要从服务器获取数据,请使用新的UnityWebRequest 类。示例:

using UnityEngine;
using UnityEngine.Networking;
using System.Collections;

public class MyBehaviour : MonoBehaviour

    public string json;
    void Start()
    
        StartCoroutine(GetText());
    

    IEnumerator GetText()
    
        using (UnityWebRequest www = UnityWebRequest.Get("http://www.my-server.com"))
        
            yield return www.Send();

            if (www.isNetworkError || www.isHttpError)
            
                Debug.Log(www.error);
            
            else
            
                // Show results as text
                json = www.downloadHandler.text;

                // Or retrieve results as binary data
                byte[] results = www.downloadHandler.data;
            
        
    

然后您可以使用JsonUtility 将其转换为 c# 类,您必须使用变量创建一个对象类并使用 json 数据作为构造函数。

示例:

using UnityEngine;

[System.Serializable]
public class PlayerInfo

    public string name;
    public int lives;
    public float health;

    public static PlayerInfo CreateFromJSON(string jsonString)
    
        return JsonUtility.FromJson<PlayerInfo>(jsonString);
    

    // Given JSON input:
    // "name":"Dr Charles","lives":3,"health":0.8
    // this example will return a PlayerInfo object with
    // name == "Dr Charles", lives == 3, and health == 0.8f.

【讨论】:

以上是关于通过 C# 在 Unity 中从 API URL 解析 JSON的主要内容,如果未能解决你的问题,请参考以下文章

在 Unity 4.6 中从 C# 脚本创建 UI 按钮,无需任何预制件 [重复]

如何在 C# 中从外部站点的 url 读取 PDF 文件 [关闭]

不允许重定向 url localhost 和 127.0.0.1 时如何在 Unity 中从 Sign in with Apple 获取代码

如何在 C# 中从 HTML 文件中提取图像 url

如何在 C# 中从 Instagram API Sharp 返回当前趋势标签

在 Unity3d 中从 iphone 加载图像