C# 来自服务器的Unity json数据返回null
我有一个问题,Json数据是从服务器获取的,然后被调出,但总是输出NULL。如果愿意,您可以测试代码,因为Url是公共的 这是我从服务器获取的Json数据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
[{“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];