从服务器反序列化Unity [英] Unity Deserializing from server
问题描述
我已经尝试了几个小时,以便从服务器反序列化我们的高分系统信息.但是我收到一个错误:
I have been trying for a couple hours to deserialize info from my server for our high score system. However I am getting an error:
ArgumentException:JSON必须表示一个对象类型.
ArgumentException: JSON must represent an object type.
这是我反序列化的方式(scores
属于Scores类型):
This is how I am deserializing (scores
is of type Scores):
public void Deserialize()
{
Debug.Log("From Server is ::::: -----> " + FromServer);
scores = JsonUtility.FromJson<Scores> (FromServer);
}
这是我的Json信息,它是由我的服务器生成的.我究竟做错了什么?
This is my Json info which is generated by my server. What am I doing wrong?
[
{
"ScoreID": "8",
"GoogleID": "asasda",
"Score": "258"
},
{
"ScoreID": "11",
"GoogleID": "kjjahushcjkasjkcajskndas",
"Score": "258"
},
{
"ScoreID": "10",
"GoogleID": "aakhskjbjkabsjjkasd",
"Score": "258"
},
{
"ScoreID": "9",
"GoogleID": "mnbabksgkajsd",
"Score": "258"
},
{
"ScoreID": "13",
"GoogleID": "kajiuskabkjshdkhausd",
"Score": "258"
},
{
"ScoreID": "7",
"GoogleID": "asasdas,mgkhgjhbhjaf",
"Score": "258"
},
{
"ScoreID": "6",
"GoogleID": "ss",
"Score": "258"
},
{
"ScoreID": "5",
"GoogleID": "kljkuasjkba",
"Score": "258"
},
{
"ScoreID": "4",
"GoogleID": "asdadasdasdasdw",
"Score": "258"
},
{
"ScoreID": "3",
"GoogleID": "asdadsasd",
"Score": "258"
},
{
"ScoreID": "2",
"GoogleID": "kbaskjkjsbnkjas",
"Score": "258"
},
{
"ScoreID": "12",
"GoogleID": "lahaushyuiahkjsjksd",
"Score": "258"
},
{
"ScoreID": "1",
"GoogleID": "254asdasd54a5s1das2d1as54d",
"Score": "259"
},
{
"ScoreID": "14",
"GoogleID": "kjaskjhjkahsjkdnjkasd",
"Score": "6859"
}
]
这些是我要序列化为的类:
and these are the classes I'm trying to serialize into:
[System.Serializable]
public class LeaderBoardEntries
{
public int ScoreID;
public string GoogleID;
public int Score;
}
[System.Serializable]
public class Scores
{
public List<LeaderBoardEntries> scores;
}
推荐答案
.json文件中只能有1个对象,才能通过JsonUtility
反序列化该对象.您的.json不是对象,而是一个对象数组.格式应为:
You can only have 1 object in the .json file to be able to deserialize it via JsonUtility
. Your .json is not an object, it's an array of objects. It should be in this format:
{
scores: [
{
"ScoreID": "8",
"GoogleID": "asasda",
"Score": "258"
},
{
"ScoreID": "11",
"GoogleID": "kjjahushcjkasjkcajskndas",
"Score": "258"
}
]
}
此.json字符串可以反序列化为Scores
对象.
this .json string can be deserialized into a Scores
object.
我同意Unity应该使他们的文档更加清晰.他们需要强调,您可以反序列化仅代表1个对象的.json文件.
I agree Unity should make their documentation a little more clear. They need to emphasize that you can deserialize .json files representing only 1 object.
这篇关于从服务器反序列化Unity的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!