Извлечение массива из массива JSONNode 2d с помощью SimpleJSON - PullRequest
0 голосов
/ 25 февраля 2019

У меня следующий 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);
         } 
    }
...