将 JSON 反序列化为 C# 分类不起作用



>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);

最新更新