【问题标题】:Parsing JSON data array in Unity from a web API using SimpleJSON使用 SimpleJSON 从 Web API 解析 Unity 中的 JSON 数据数组
【发布时间】:2021-12-17 11:17:39
【问题描述】:

您好,感谢您花时间查看我的问题。 我正在使用 SimpleJSON 解析来自https://api.thingspeak.com/channels/1327025/fields/1.json?results=1 的数据流 特别是试图到达“feeds”中的“field1”。

using System.Collections.Generic;
using UnityEngine;
using System.IO;
using UnityEngine.Networking;
using SimpleJSON;
using TMPro;

public class onLoad : MonoBehaviour
{
    public TMP_Text temperatureData;

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using UnityEngine.Networking;
using SimpleJSON;
using TMPro;

public class onLoad : MonoBehaviour
{
    public TMP_Text temperatureData;

    public void GetJsonData()
    {
        StartCoroutine(RequestWebService());
        Debug.Log("test");
    }

    IEnumerator RequestWebService()
    {
        string jsonString = "https://api.thingspeak.com/channels/1327025/fields/1.json?results=1";
        Debug.Log(jsonString);

        using (UnityWebRequest webData = UnityWebRequest.Get(jsonString))
        {
            yield return webData.SendWebRequest();
            if (webData.isNetworkError || webData.isHttpError)
            {
                print("---------------- ERROR ----------------");
                print(webData.error);
            }
            else
            {
                if (webData.isDone)
                {
                    JSONNode jsonData = JSON.Parse(System.Text.Encoding.UTF8.GetString(webData.downloadHandler.data));

                    if (jsonData == null)
                    {
                        print("---------------- NO DATA ----------------");
                    }
                    else
                    {
                        print("---------------- JSON DATA ----------------");
                        print("jsonData.Count:" + jsonData.Count);

                        temperatureData.text = jsonData["feeds\field1"];
                        Debug.Log(temperatureData.text);
        }
    }
            }}}}

我的代码似乎工作正常,因为我让“jsonData.Count”工作(出现为 2)。我假设它正在阅读“频道”和“提要”。但它弹出为空。

如何将键和项放在 jsonData 中以到达 field1 ? 谢谢

【问题讨论】:

  • jsonData [ "feeds" ] [ 0 ] [ "field1" ] 不会给出想要的输出吗?

标签: c# json unity3d parsing httpwebrequest


【解决方案1】:

简单的 JSON 基本上就像一个带有单个关键字的 字典...你不能只传递一个 path 给它。

你想要的是

  • 首先访问feeds
  • 它是一个数组,所以获取一个元素 .. 可能是第一个?
  • 该元素最终访问field1

类似

temperatureData.text = jsonData["feeds"][0]["field1"].Value;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    • 2016-08-27
    相关资源
    最近更新 更多