Unity C#将字符串转换为Json数组Erro
我有两门课:Unity C#将字符串转换为Json数组Erro,c#,json,unity3d,C#,Json,Unity3d,我有两门课: [System.Serializable] public class oneTask{ public string id; public string username; public string task; public string category; public string time; public bool status; } public class taskcollection{ public oneTas
[System.Serializable]
public class oneTask{
public string id;
public string username;
public string task;
public string category;
public string time;
public bool status;
}
public class taskcollection{
public oneTask[] tasksjson;
}
我的皈依是
taskcollection temptasks = JsonUtility.FromJson<taskcollection> (jsonString);
编辑:
来自服务器的Json不包含任何关于taskcollection
类的内容。它只包含有关oneTask
类的信息。您必须执行JsonHelper.FromJson(jsonString)
不是JsonHelper.FromJson(jsonString)代码>
您必须修复Json,然后使用JsonHelper
对其进行反序列化
string fixJson(string value)
{
value = "{\"Items\":" + value + "}";
return value;
}
//Fix Json
jsonString = fixJson(jsonString);
//Deserialize it
oneTask[] temptasks = JsonHelper.FromJson<oneTask>(jsonString);
string-fixJson(字符串值)
{
value=“{\”Items\”:“+value+”}”;
返回值;
}
//修复Json
jsonString=fixJson(jsonString);
//反序列化它
oneTask[]tettasks=JsonHelper.FromJson(jsonString);
有些问题需要解决。首先,您需要将[System.Serializable]
添加到oneTask
之上
从JSON字符串中可以看出,它是一个顶级数组。目前UnityJsonUtility
不支持顶级JSON数组。我使用这个助手类能够使用JSON顶级数组
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;
}
}
public类JsonHelper
{
公共静态T[]getJsonArray(字符串json)
{
字符串newJson=“{\“array\”:“+json+”}”;
Wrapper=JsonUtility.FromJson(newJson);
返回wrapper.array;
}
[可序列化]
私有类包装器
{
公共T[]数组;
}
}
以及如何在您的案例中使用它
oneTask[] objects = JsonHelper.getJsonArray<oneTask> (jsonString);
oneTask[]objects=JsonHelper.getJsonArray(jsonString);
您可以发布JSON字符串的外观吗?发布JSON。没有它我们就无能为力。您的jsonString变量在哪里,请在taskcollection的顶部包含代码[System.Serializable]class@JohanLindkvist我编辑问题并发布JSON。
oneTask[] objects = JsonHelper.getJsonArray<oneTask> (jsonString);