>using 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。 牛顿 JSON 不反序列化 JSON 到类
请提供一些我可以使其工作的解决方案。我主要尝试了所有解决方案。
你应该添加外部类OutPersistData来包装PersistData,就像这样包装PersistData
。class OutPersistData
{
public PersistData PersistData { get; set; }
}
然后将 OutPersistData 反序列化为对象
var persistObj = JsonConvert.DeserializeObject<OutPersistData>(json);
它应该有效。
由于 json 层次结构不正确,如果要将PersistData
用作反序列化目标,请在 json 中删除外部注释才能使其工作。
{
"method":["SetColorPersist","SetColorPersist","SetColorPersist"],
"per":["BF0ECF","78F77A","0918B8"],
"Source":["0","0","0"]
}
或者,您可以创建外部类来包装PersistData
,然后您可以使用源 json 内容进行反序列化。
外类.cs
public class OuterClass
{
public PersistData PersistData { get; set; }
}
如果选择辅助解决方案,请记住将反序列化目标更改为OuterClass
。
var outerClass = JsonConvert.DeserializeObject<OuterClass>(json);