使用 SimpleJSON 从 Web API 解析 Unity 中的 JSON 数据数组

Posted

技术标签:

【中文标题】使用 SimpleJSON 从 Web API 解析 Unity 中的 JSON 数据数组【英文标题】:Parsing JSON data array in Unity from a web API using SimpleJSON 【发布时间】: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" ] 不会给出想要的输出吗? 【参考方案1】:

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

你想要的是

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

类似

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

【讨论】:

以上是关于使用 SimpleJSON 从 Web API 解析 Unity 中的 JSON 数据数组的主要内容,如果未能解决你的问题,请参考以下文章

anyjson与simplejson的使用

在 C# 中循环一个 SimpleJSON 数组

从angularjs传递参数至Web API

无法导入名称 simplejson - 安装 simplejson 后

无法导入名称 simplejson - 安装 simplejson 后

Web Audio Api:通过套接字从nodejs服务器播放数据块的正确方法