Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 来自服务器的Unity json数据返回null_C#_Json_Unity3d - Fatal编程技术网

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

C# 来自服务器的Unity json数据返回null,c#,json,unity3d,C#,Json,Unity3d,我有一个问题,Json数据是从服务器获取的,然后被调出,但总是输出NULL。如果愿意,您可以测试代码,因为Url是公共的 这是我从服务器获取的Json数据 [{“id”:“3”,“问题”:“Cik ir 4+4=?”,“answer1”:“3”,“answer2”:“13”,“answer3”:“7”,“answer4c”:“8”}] 如何解决这个问题,使Json数据正确输出? 多谢各位 using System.Collections; using System.Collections.Ge

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

这是我从服务器获取的Json数据
[{“id”:“3”,“问题”:“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;
    }
}
使用系统集合;
使用System.Collections.Generic;
使用System.Net.Mime;
使用UnityEngine;
使用UnityEngine.UI;
使用UnityEngine。联网;
使用制度;
公共类代码:单一行为
{
公共文本优先;
公用常量字符串URLBase=”http://91.200.67.104:8080/test/json.php";
[系统可序列化]
公开课成绩
{
公共字符串id;
公共字符串问题;
公共字符串应答器1;
公共字符串应答器2;
公共字符串应答器3;
公共字符串应答器4c;
}
void Start()
{
start例程(Run());
}
IEnumerator运行()
{
var req=CreateReturnPlayerDataRequest();
产生返回请求SendWebRequest();
var结果=HandleReturnPlayerDataRequest(req);
first.text=results.id+“dasdas”+results.question;
}
公共静态UnityWebRequest CreateReturnPlayerDataRequest()
{
var req=UnityWebRequest.Get(URLBase);
返回请求;
}
公共静态结果HandleReturnPlayerDataRequest(UnityWebRequest请求)
{
如果(请求isNetworkError)
{
Debug.LogError(“未能发布/播放/注册”);
返回新结果();
}
//调试izvada datus控制台
Log(“{\“Results\”:“+req.downloadHandler.text+”);
Results=JsonUtility.FromJson(“{\“Results\”:“+req.downloadHandler.text+”);
Debug.Log(“ID:+results.ID+”;问题:+results.question+;“+results.answer1”);
Debug.Log(results.id);
Debug.Log(results.question);
调试日志(results.answer1);
返回结果;
}
}

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

首先,您从服务器接收的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;
}
[System.Serializable]
公共类根对象
{
公开名单结果;
}
[系统可序列化]
公开课成绩
{
公共字符串id;
公共字符串问题;
公共字符串应答器1;
公共字符串应答器2;
公共字符串应答器3;
公共字符串应答器4c;
}
用法:

var obj = JsonUtility.FromJson<RootObject>("{\"Results\":" + req.downloadHandler.text + "}");
Results serverData = obj.Results[0];
var obj=JsonUtility.FromJson(“{\”Results\”:“+req.downloadHandler.text+”);
结果服务器数据=对象结果[0];