我正在制作一个统一的应用程序,该应用程序连接到数据库,我需要组织从数据库中获得的信息,我使用以下coroutine获取信息:
private IEnumerator GetUsers(string url)
{
using (UnityWebRequest webRequest = UnityWebRequest.Get(url))
{
// Request and wait for the desired page.
yield return webRequest.SendWebRequest();
if (webRequest.isNetworkError)
{
Debug.Log(": Error: " + webRequest.error);
}
else
{
Debug.log("DATA:\n" + webRequest.downloadHandler.text);
}
}
}
然后我希望我收到的数据(名称,姓氏,代码,密码等)可以将其组织起来以打印出来,或者以后根据我的需要使用它们,在此先感谢您。< / p>
并尝试使用一个可序列化的类来保存我的数据,但是我只能使用一个(当我使用自己的数据而不是来自服务器时,大声笑),我还试图制作一个类型为people的矢量来保存多个数据,它也不起作用 :C或我不知道如何使它工作
[System.Serializable]
public class People
{
public string names, surnames, cedula, password, telephone, address, code,
email;
}
[System.Serializable]
public class PeopleList
{
public People[] users;
}
public class GetSendDate : MonoBehaviour
{
private IEnumerator GetUsers(string url)
{
using (UnityWebRequest webRequest = UnityWebRequest.Get(url))
{
// Request and wait for the desired page.
yield return webRequest.SendWebRequest();
if (webRequest.isNetworkError)
{
Debug.Log(": Error: " + webRequest.error);
}
else
{
PeopleList users = new People();
string json = webRequest.downloadHandler.text;
users = JsonUtility.FromJson<PeopleList>(json);
Debug.Log(users.user[0].names);
Debug.Log(users.user[0].surnames);
Debug.Log(users.user[0].cod);
}
}
}
}
这是webRequest.downloadHandler.text的响应
[{"userID": 1, "idRole": 1, "email": "ada@gmail.com", "password": "$ 2a $ 10 $ YVXachXCaPBj9vDo.d4itO4vghtCvSMfrmeHCGJqJ6rSneM / hJsPy", "names": "Juanota Rosadita" , "surnames": "sapoton", "cedula": "123", "telefono": "789", "direccion": "147", "code": "258"}, {"idUsuario": 7, " idRole ": 1," email ":" vic@gmail.com "," password ":" $ 2a $ 10 $ JA1rszAgVK52OnWoOWDXneQcVUHwWBi2Di9o2z7kMqrWPyrjGoTnO "," names ":" victor "," Surnames ":" giron "," cedula ":" 1085 "," telefono ":" 313 "," direccion ":" yoquese "," code ":" 217 "}, {" idUsuario ": 8," idRole ": 1," email ":" juanos @ gmail. com "," password ":" $ 2a $ 10 $ 6EAy2e7dXASx2MPDA3vtW.heYuM1wsaEtFmA4Lb6BD0RCTJvm / HSe "," names ":" Juanito "," Surnames ":" Alcachofa "," cedula ":" 789 "," telefono ":" 31358964 " , "address": "123", "code": "753"}]
统一运行函数时出现以下错误:
ArgumentException:JSON必须表示一个对象类型。 UnityEngine.JsonUtility.FromJson(System.String json,System.Type类型)(在C:/buildslave/unity/build/Modules/JSONSerialize/Public/JsonUtility.bindings.cs:42) UnityEngine.JsonUtility.FromJson [T](System.String json)(在C:/buildslave/unity/build/Modules/JSONSerialize/Public/JsonUtility.bindings.cs:30) GetSendDate + d__6.MoveNext()(位于Assets / Scripts / GetSendDate.cs:73) UnityEngine.SetupCoroutine.InvokeMoveNext(System.Collections.IEnumerator枚举器,System.IntPtr returnValueAddress)(位于C:/buildslave/unity/build/Runtime/Export/Scripting/Coroutines.cs:17)
答案 0 :(得分:0)
您能否发送响应webRequest.downloadHandler.text
的捕获“ Debug.log”?
因为您很可能尝试转换整个响应,包括标题。您只需要将响应数据转换为json。
答案 1 :(得分:0)
您可以使用Newton Soft Json Utility进行解析。
只需下载DLL文件并将其放在您的Assets / Plugins文件夹中 您可以从以下位置下载: https://www.nuget.org/packages/Unity.Newtonsoft.Json/
using Newtonsoft.Json;
private IEnumerator GetUsers(string url)
{
using (UnityWebRequest webRequest = UnityWebRequest.Get(url))
{
yield return webRequest.SendWebRequest();
if (webRequest.isNetworkError)
{
Debug.Log(": Error: " + webRequest.error);
}
else if (m_Request.isHttpError)
{
Debug.Log(" Server Not Responding ");
}
else
{
var response = JObject.Parse(m_Request.downloadHandler.text);
users = JsonConvert.DeserializeObject<PeopleList>(response.SelectToken("data"))
}
}
}