我正在使用JsonHelper(https://stackoverflow.com/a/36244111)并将其全部设置在我的程序中
UserInfo.cs
[Serializable]
public class UserInfo : MonoBehaviour {
public string number;
public string name;
}
当我打电话给UserInfo[] list = JsonHelper.FromJson<UserInfo>(www.downloadHandler.text);
时,我看到了
ArgumentException:JSON必须表示一个对象类型。
请帮助我。
杰森
[{"number":0,"name":"Bulbasaur"},{"number":1,"name":"Ivysaur"},{"number":2,"name":"Venusaur"},{"number":3,"name":"Charmander"},{"number":4,"name":"Charmeleon"},{"number":5,"name":"Charizard"},{"number":6,"name":"Squirtle"}]
答案 0 :(得分:1)
如果您正在使用下面的包装器类...
using UnityEngine;
using System;
public static class JsonHelper
{
public static T[] FromJson<T>(string json)
{
Wrapper<T> wrapper = JsonUtility.FromJson<Wrapper<T>>(json);
return wrapper.Items;
}
public static string ToJson<T>(T[] array, bool prettyPrint = false)
{
Wrapper<T> wrapper = new Wrapper<T>();
wrapper.Items = array;
return JsonUtility.ToJson(wrapper, prettyPrint);
}
[Serializable]
private class Wrapper<T>
{
public T[] Items;
}
}
然后像这样使用它:
string JSONToParse = "{\"Items\":" + www.downloadHandler.text + "}";
UserInfo[] list = JsonHelper.FromJson<UserInfo>(JSONToParse);
为什么?
"{\"Items\":"
必须与Array变量的名称匹配
public T[] Items;
编辑:
发现了您的问题。 删除“ MonoBehaviour”作为对UserInfo的继承。那应该解决它。序列化程序无法序列化从monobehaviour,component,scriptableobject等继承的类。只有普通类(模型)可以工作。
[Serializable]
public class UserInfo
{
public string number;
public string name;
}