C# 如何在unity中使用JsonUtility获取子数组

C# 如何在unity中使用JsonUtility获取子数组,c#,json,unity3d,C#,Json,Unity3d,这是我的JSON: {"data":[{"id":1,"layoutLabel":"Sameer Non Custom","orbNumber":"["0","1","2","3"]"}, {"id":2,"layoutLabel":"Samer Custom","orbNumber":"["2","3","4","5"]"}],"status":200} 下面是我在unity中的C#类来反序列化它: [System.Serializable] class GetLayoutsResult {

这是我的JSON:

{"data":[{"id":1,"layoutLabel":"Sameer Non Custom","orbNumber":"["0","1","2","3"]"},
{"id":2,"layoutLabel":"Samer Custom","orbNumber":"["2","3","4","5"]"}],"status":200}
下面是我在unity中的C#类来反序列化它:

[System.Serializable]
class GetLayoutsResult
{
    public List<LayoutData> data;
    public int status;
}

[System.Serializable]
class LayoutData
{
    public int id;
    public string layoutLabel;
    public string [] orbNumber;
}
     GetLayoutsResult P = JsonUtility.FromJson<GetLayoutsResult>(w.text);
        if (P.status == 200)
        {
            for (int i = 0; i < P.data.Count; i++)
            {
               Debug.Log(layoutEditButtonScript.layoutName + " " + P.data[i].positionX[0])
            }
 }
[System.Serializable]
类GetLayoutsResult
{
公开名单数据;
公众地位;
}
[系统可序列化]
类布局数据
{
公共int id;
公共字符串布局标签;
公共字符串[]或数字;
}
下面是对其进行反序列化的代码:

[System.Serializable]
class GetLayoutsResult
{
    public List<LayoutData> data;
    public int status;
}

[System.Serializable]
class LayoutData
{
    public int id;
    public string layoutLabel;
    public string [] orbNumber;
}
     GetLayoutsResult P = JsonUtility.FromJson<GetLayoutsResult>(w.text);
        if (P.status == 200)
        {
            for (int i = 0; i < P.data.Count; i++)
            {
               Debug.Log(layoutEditButtonScript.layoutName + " " + P.data[i].positionX[0])
            }
 }
GetLayoutsResult P=JsonUtility.FromJson(w.text);
如果(P.status==200)
{
对于(int i=0;i

我在这里没有得到positionX数组。我得到了一个索引数组错误。有人能帮我反序列化unity中的子数组吗

问题在于您的json格式不正确

这:

应该是这样的:

"orbNumber": ["0", "1", "2", "3"]
不需要在数组周围加引号


此外,您还需要在模型类中将positionX重命名为orbNumber。

使用
Newtonsoft Json.Net将非常简单明了-JsonConvert
Unitys内置的Json实用程序实际上比Newtonsoft更快,使用起来也同样简单。这里的速度基准:@turnipinrut感谢您提供的详细信息,我需要通过用例进行验证,因为
newtonsoftjson.Net
可以说是社区使用的最流行的
Json序列化程序
,这个序列化程序也需要
[Serialize]
属性(我希望不是),因为这会使.Net framework中的许多内置类(默认情况下不按属性标记)变得困难,所以在某些地方我们也不会故意标记,因为二进制文件需要在运行时调用自定义序列化程序(如Protobuf)serialization@MrinalKamboj在统一申请中,,图书馆的受欢迎程度根本不是重要的因素。最好使用工具附带的库。所以建议使用
JsonUtility
。我完全理解这一事实,但我是在专门讨论使用
.NET2.0
的Unity,我相信
JavaScriptSerializer
是在.NET的更高版本中引入的。话虽如此,
JsonUtility
是Unity应用程序的默认工具,即使还有其他更受欢迎的工具。