使用Nwetonsoft dll
JSON格式
{
"PersistData":{
"method":["SetColorPersist","SetColorPersist","SetColorPersist"],
"per":["BF0ECF","78F77A","0918B8"],
"Source":["0","0","0"]}
}
C#类
[Serializable]
public class PersistData
{
[SerializeField]
public string[] Method;
[SerializeField]
public string[] Per;
[SerializeField]
public string[] Source;
}
反序列化
public PersistData persistObj = new PersistData();
string json = Obj.data.ToString();
persistObj = JsonConvert.DeserializeObject<PersistData>(json);
尝试使用unity jsonutility,它不支持数组JSON.newton JSON,没有将JSON反序列化为Class
请提供一些解决方案,我可以让它工作。我主要尝试了所有的解决方案。
你应该添加外类OutPersistData来包装PersistData,像这样
class OutPersistData
{
public PersistData PersistData { get; set; }
}
然后将OutPersistData反序列化为一个对象。
var persistObj = JsonConvert.DeserializeObject<OutPersistData>(json);
应该可以用。
因为json的层次结构不正确,如果你想使用 PersistData
作为Deserialize目标,在json中加入外链注解就可以了。
{
"method":["SetColorPersist","SetColorPersist","SetColorPersist"],
"per":["BF0ECF","78F77A","0918B8"],
"Source":["0","0","0"]
}
或者,你也可以创建外层类来封装这个类。PersistData
然后你可以使用origin json内容来反序列化。
外层类.cs
public class OuterClass
{
public PersistData PersistData { get; set; }
}
记得将反序列化目标改为 OuterClass
如果你选择二级方案。
var outerClass = JsonConvert.DeserializeObject<OuterClass>(json);