我从我的服务器中提取Json数据并打算将其读入配置文件。
代码一直运行到userProfile1 = JsonUtility.FromJson<UserProfile>(www.text);
并停止。我尝试在之前和之后调试调试行,之后调试永远不会触发。
我认为这个问题可能与Unity的JsonUtility如何期望数据格式有关,但我不确定究竟是什么因为我没有得到任何错误。
string baseurl = "http://55.55.55.55/api/";
public string loginId = "test@spam.com";
public UserProfile userProfile1;
void Start()
{
userProfile1 = new UserProfile();
StartCoroutine(GetUserProfile(loginId));
}
IEnumerator GetUserProfile(string email)
{
string url = baseurl + "users/email/" + email;
// Call server
WWW www = new WWW(url);
yield return www;
// Read returned user profile
if (www.error == null)
{
userProfile1 = JsonUtility.FromJson<UserProfile>(www.text);
}
else
{
Debug.Log("WWW Error: " + www.error);
}
}
这里是个人资料的类:
[System.Serializable]
public class UserProfile
{
public string _id;
public string first_name;
public string last_name;
public string email;
public string nick;
public string join_date;
public int age;
public string sex;
public int inventory_slot;
public int __v;
}
这里是www.text
[
{
"_id":"58b92a058f9565e76d364437",
"first_name":"Test",
"last_name":"Name",
"email":"tinkle@spam.com",
"nick":"Tinkle",
"age":42,
"sex":"male",
"__v":0,
"inventory_slot":200000,
"join_date":"2017-02-26T00:36:10.266Z"
}
]
答案 0 :(得分:0)
您的模型没问题。我认为www.text
根本没有价值。它可能仍然是null
,因为数据尚未到达。我建议你应该做的是:
IEnumerator GetUserProfile(string email, Action<string> complete)
{
string url = baseurl + "users/email/" + email;
// Call server
WWW www = new WWW(url);
yield return www;
complete(www.text);
}
你应该将你的StartCoroutine改为:
StartCoroutine(GetUserProfile(loginId, (data) =>
{
var userProfile1 = JsonUtility.FromJson<UserProfile>(data);
}));
希望它有所帮助!
P.S。或者您知道什么,我开始认为问题在于您传递的是List。尝试将JsonUtility.FromJson<UserProfile>(data)
更改为JsonUtility.FromJson<List< UserProfile>>(data)
。