【发布时间】:2020-03-25 11:54:05
【问题描述】:
我从 API 接收 JSON 字符串,我需要将其反序列化为可以在 C# 和 Unity 中使用的内容。我正在尝试使用Unity's JSON Serialization,但它似乎对我不起作用?
以下是 API 中 JSON 结构的示例:
{
"results": [
[
"2016-09-01/20160901_200002_000.jpg",
"2016-09-01/20160901_192851_000.jpg",
"2016-09-01/20160901_193443_000.jpg",
"2016-09-01/20160901_210130_000.jpg"
],
[
"2016-09-02/20160902_104409_000.jpg",
"2016-09-01/20160901_165949_000.jpg"
],
[
"2016-09-02/20160902_104409_000.jpg",
"2016-09-02/20160902_104721_000.jpg",
"2016-09-02/20160902_093420_000.jpg",
],
[
"2016-09-02/20160902_082554_000.jpg"
]
]
}
这是我尝试使用 Unity 的 JsonUtility 类将 JSON 反序列化为自定义类的代码:
[Serializable]
public class MyClass
{
public List<List<string>> results;
}
MyClass test = JsonUtility.FromJson<MyClass>(jsonString);
Debug.Log(test.results); // this is just returning null
有人知道我做错了什么吗?
编辑:This 答案似乎表明这是因为 JsonUtility 不支持数组并提供了一个帮助类,但它不适用于这个问题。
【问题讨论】:
-
仅供参考,您正在尝试反序列化 JSON
-
我作为欺骗目标链接的问题有你的答案,虽然它是一个很长的阅读。我认为您可能会遇到问题“如果您得到 Null,请确保 Json 不是 Json 数组。如果是,请使用上面的帮助程序类和 JsonHelper.FromJson 而不是 JsonUtility.FromJson。”
-
@IanKemp 这是对该问题的一个非常有用的答案,但是它对我的问题所做的只是提出了问题发生的原因,即“Unity 的 JsonUtility 不支持数组,因为它仍然是新的”。不幸的是,提供的帮助程序类不适用于我的问题,可能是因为我认为我的 JSON 的数组中有一个数组,所以有一层额外的复杂性?无论哪种方式,我都不会就如何编辑帮助程序类提出新问题,所以这个问题仍然没有答案。