尝试在 Unity C# 中解析 JSON 数组,但它 returns null
Trying to parse a JSON array in Unity C# but it returns null
这是我的 JSON 文件:
[
{
"name": "An item"
}
]
这是我的帮手class:
public static class JsonHelper
{
public static T[] FromJson<T>(string json)
{
string newJson = "{ \"array\": " + json + "}";
Wrapper<T> wrapper = JsonUtility.FromJson<Wrapper<T>>(newJson);
return wrapper.array;
}
[System.Serializable]
private class Wrapper<T>
{
public T[] array;
}
}
这是 class 我正在尝试用以下材料制作对象:
public class Item
{
public string name, desc;
}
这是我调用助手的地方class:
Item[] itemList = JsonHelper.FromJson<Item>(itemJson.text);
问题是 itemList
而 JsonHelper
中的 wrapper.array
是 null
。
我直接复制了代码:
http://www.boxheadproductions.com.au/deserializing-top-level-arrays-in-json-with-unity/
和
https://forum.unity.com/threads/how-to-load-an-array-with-jsonutility.375735/
我做错了什么?
我建议您在包管理器控制台中使用以下命令为 Unity 安装 json.net
NuGet 包
Install-Package Unity.Newtonsoft.Json -Version 7.0.0
然后无需修改太多代码,您就可以让它工作
只需将您的 JsonHelper
class 替换为以下
public static class JsonHelper
{
public static T[] FromJson<T>(string json)
{
string newJson = "{ \"array\": " + json + "}";
JToken jToken = JToken.Parse(newJson);
Wrapper<T> wrapper = jToken.ToObject<Wrapper<T>>();
return wrapper.array;
}
[System.Serializable]
private class Wrapper<T>
{
public T[] array;
}
}
并且您需要将 using Newtonsoft.Json.Linq;
命名空间添加到您的程序中。
输出:(来自调试器)
注意: 使用 Newtonsoft.Json 在 WebGL 项目中不起作用。
这是我的 JSON 文件:
[
{
"name": "An item"
}
]
这是我的帮手class:
public static class JsonHelper
{
public static T[] FromJson<T>(string json)
{
string newJson = "{ \"array\": " + json + "}";
Wrapper<T> wrapper = JsonUtility.FromJson<Wrapper<T>>(newJson);
return wrapper.array;
}
[System.Serializable]
private class Wrapper<T>
{
public T[] array;
}
}
这是 class 我正在尝试用以下材料制作对象:
public class Item
{
public string name, desc;
}
这是我调用助手的地方class:
Item[] itemList = JsonHelper.FromJson<Item>(itemJson.text);
问题是 itemList
而 JsonHelper
中的 wrapper.array
是 null
。
我直接复制了代码:
http://www.boxheadproductions.com.au/deserializing-top-level-arrays-in-json-with-unity/
和
https://forum.unity.com/threads/how-to-load-an-array-with-jsonutility.375735/
我做错了什么?
我建议您在包管理器控制台中使用以下命令为 Unity 安装 json.net
NuGet 包
Install-Package Unity.Newtonsoft.Json -Version 7.0.0
然后无需修改太多代码,您就可以让它工作
只需将您的 JsonHelper
class 替换为以下
public static class JsonHelper
{
public static T[] FromJson<T>(string json)
{
string newJson = "{ \"array\": " + json + "}";
JToken jToken = JToken.Parse(newJson);
Wrapper<T> wrapper = jToken.ToObject<Wrapper<T>>();
return wrapper.array;
}
[System.Serializable]
private class Wrapper<T>
{
public T[] array;
}
}
并且您需要将 using Newtonsoft.Json.Linq;
命名空间添加到您的程序中。
输出:(来自调试器)
注意: 使用 Newtonsoft.Json 在 WebGL 项目中不起作用。