我是一个关于JSON的总菜鸟,从来没有使用它,我只是想不出来。我尝试了很多东西,但我只是从错误跳到错误。我希望有人可以帮助我。
所以这是我的JSON文件的示例,我从网站上读到了这个文件。
[{"ID":60034,"Datetime":1519029071,"Module":"Krol 42","Latitude":51.8423083333333,"Longitude":4.57711,"Speed":0.59264},{"ID":58961,"Datetime":1519025476,"Module":"Krol 42","Latitude":51.8422666666667,"Longitude":4.576865,"Speed":0.59264}]
这是我的剧本:
[Serializable]
public class Item
{
public int ID;
public int Datetime;
public string Module;
public float Latitude;
public float Longitude;
public float Speed;
}
public class JsonHelper
{
public static T[] getJsonArray<T>(string json)
{
string newJson = "{ \"array\": " + json + "}";
Wrapper<T> wrapper = JsonUtility.FromJson<Wrapper<T>> (newJson);
return wrapper.array;
}
[Serializable]
private class Wrapper<T>
{
public T[] array;
}
}
IEnumerator Start()
{
string url = "http://tnt.ssedemo.eu/TrackAndTraceStrukton.aspx";
WWW www = new WWW(url);
yield return www;
if (www.error == null)
{
string jsonString = www.text;
Item[] item = JsonHelper.getJsonArray<Item> (jsonString);
Debug.Log (item[0].ID);
}
else
{
Debug.Log("ERROR: " + www.error);
}
}
我现在得到的错误是:
ArgumentException:JSON解析错误:在对象成员之后缺少逗号或'}'。
我希望有人可以帮助我,我会很感激, 提前谢谢。
[编辑]
解
[Serializable]
public class Item
{
public int ID;
public int Datetime;
public string Module;
public float Latitude;
public float Longitude;
public float Speed;
}
public class JsonHelper
{
public static T[] getJsonArray<T>(string json)
{
string newJson = "{ \"array\": " + json + "}";
Wrapper<T> wrapper = JsonUtility.FromJson<Wrapper<T>> (newJson);
return wrapper.array;
}
[Serializable]
private class Wrapper<T>
{
public T[] array;
}
}
IEnumerator Start()
{
string url = "http://tnt.ssedemo.eu/TrackAndTraceStrukton.aspx";
WWW www = new WWW(url);
yield return www;
if (www.error == null){
string jsonString = www.text;
int index = jsonString.LastIndexOf("]");
if (index > 0){
jsonString = jsonString.Substring(0, index + 1);
}
Item[] item = JsonHelper.getJsonArray<Item> (jsonString);
foreach(Item krol in item){
Transform ride = Instantiate(prefab, new Vector3(krol.Longitude * 10f, 2f, krol.Latitude * 10f), Quaternion.identity) as Transform;
}
} else {
Debug.Log("ERROR: " + www.error);
}
}