繁体   English   中英

来自服务器的 Unity json 数据返回 null

[英]Unity json data from server returns null

我有一个问题,从服务器获取 Json 数据然后调用,但总是输出 NULL。 如果你愿意,你可以测试代码,Url 是公开的。

这是我从服务器获取的 Json 数据
[{"id":"3","question":"Cik ir 4 + 4 = ?","answer1":"3","answer2":"13","answer3":"7","answer4c":"8"}]
我该如何解决这个问题,以便正确输出 Json 数据?

谢谢你。

using System.Collections;
using System.Collections.Generic;
using System.Net.Mime;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Networking;
using System;

public class Code : MonoBehaviour
{
    public Text first;
    public const string URLBase = "http://91.200.67.104:8080/test/json.php";

    [System.Serializable]
    public class Results
    {
        public string id;
        public string question;
        public string answer1;
        public string answer2;
        public string answer3;
        public string answer4c;
    }

    void Start()
    {
        StartCoroutine(Run());
    }

    IEnumerator Run()
    {
        var req = CreateReturnPlayerDataRequest();
        yield return req.SendWebRequest();
        var results = HandleReturnPlayerDataRequest(req);
        first.text = results.id + "  dasdasdas  " + results.question;
    }

    public static UnityWebRequest CreateReturnPlayerDataRequest()
    {
        var req = UnityWebRequest.Get(URLBase);
        return req;
    }
    public static Results HandleReturnPlayerDataRequest(UnityWebRequest req)
    {
        if (req.isNetworkError)
        {
            Debug.LogError("Failed to POST /player/register");
            return new Results();
        }
        // Debug izvada datus console
        Debug.Log("{\"Results\":" + req.downloadHandler.text + "}");
        Results results = JsonUtility.FromJson<Results>("{\"Results\":" + req.downloadHandler.text + "}");
        Debug.Log("ID:" + results.id + "  ;question: " + results.question + "   ; " + results.answer1);
        Debug.Log(results.id);
        Debug.Log(results.question);
        Debug.Log(results.answer1);
        return results;
    }
}

您的反序列化类结构不正确。

首先,您从服务器接收的 json 数据是一个数组/集合(它被方括号“[]”包围)。

其次,您将其放置在父对象的“结果”字段中。

因此,这将是正确的结构:

[System.Serializable]
public class RootObject
{
    public List<Results> Results;
}

[System.Serializable]
public class Results
{
    public string id;
    public string question;
    public string answer1;
    public string answer2;
    public string answer3;
    public string answer4c;
}

用法:

var obj = JsonUtility.FromJson<RootObject>("{\"Results\":" + req.downloadHandler.text + "}");
Results serverData = obj.Results[0];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM