У меня следующий JSON, взятый с сервера
{
"UniqueModelURL": "https://s3-us-west-2.amazonaws.com/ticomsoft-image-repo",
"Images": [{
"Cat1": [{
"Img1": "1.png"
}, {
"Img2": "2.png"
}, {
"Img3": "3.png"
}, {
"Img4": "4.png"
}]
}]
}
, после успешного анализа JSON с помощью UnityWebRequest я переместил строковый json в void ProcessJSON(string jsonString)
.
void ProcessJSON(string jsonString)
{
JSONNode JNode = JSON.Parse(jsonString);
var prefix = JNode["UniqueModelURL"].Value;
Debug.Log(prefix + " of type "+ prefix.GetType()); //returnd the UniqueModelURL;
JSONArray Images = JNode["Images"].AsArray;
Debug.Log(Images.Count + " of type "+ Images.GetType());
}
, теперь моя проблемаэто с извлечением Cat1 из массива изображений (может быть более 1 категории)
я попытался
JSONArray cat1= JNode["Images"][1].AsArray;
Затем я напечатал cat1.Count, и это было 0, так что что-то не так.Images.Count был 1;
JSONArray cat1 = JNode["Images"]["Cat1"].AsArray;
тот же результат, что и выше;
JSONArray Cat1 = Images.Values[0];
JSONArray cat1 = Images.getJSONObject(0).AsArray;
Получено (ошибка CS1061: «JSONArray» не содержитопределение для 'getJSONObject')
как ни странно, когда я следовал синтаксису SimpleJSON Wiki
var prefix = JNode["UniqueModelURL"].Value;
Debug.Log(prefix + " of type "+ prefix.GetType());
, получилось "https://s3 -us-west-2.amazonaws.com/ticomsoft-image-repo ";но
var str = JNode["Images"]["Cat1"][1]["Img2"].Value;
Debug.Log(str + " of type "+ str.GetType());
дал пустую строку
для записи, остальной код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using SimpleJSON;
using UnityEngine.Networking;
public class ParseJSONFromServer : MonoBehaviour
{
public string JSON_URL;
// Start is called before the first frame update
IEnumerator Start()
{
Debug.Log("start");
UnityWebRequest www = UnityWebRequest.Get(JSON_URL);
yield return www.SendWebRequest();
if (www.error == null)
{
Debug.Log("success: "+ Time.time);
ProcessJSON(www.downloadHandler.text);
}
else
{
Debug.Log("ERROR: " + www.error);
}
}