0

我对json有点陌生。所以我想在一个数组的值内创建一个数组值,如下所示。

{
    "id": 0,
    "title": "LEVEL",
    "value": [10[2,3,5], 1]
}

但不幸的是它不起作用。当我尝试读取数据时,它给了我一个错误。

我想知道是否可以在数组值中包含一个数组。谢谢你。

4

2 回答 2

2
{
"id": 0,
"title": "LEVEL",
"value": [10, [2, 3, 5], 1]

}

选项2:

    {
    "id": 0,
    "title": "LEVEL",
    "value": [10, {
        "someKey": [2, 3, 5]
    }, 1]
}

选项3:

       {
    "id": 0,
    "title": "LEVEL",
    "value": [10, {
        "someKey": [2, {
            "someKey": [9, 1, 1]
        }, 5]
    }, 1]
   }
于 2017-07-28T05:41:06.447 回答
2

我总是建议人们创建一个类并从中生成 json,而不是试图从你的脑海中构造 json。如果您这样做会更容易,并且生成的 json 将始终有效并且完全符合您的要求。

这就是您希望 json 的样子:

在此处输入图像描述

以下是该结构的外观:

[Serializable]
public class Dialog
{
    public Human human;
    public NonHuman nonHuman;
}

[Serializable]
public class Human
{
    public Inner inner;
    public Outer outer;
}

[Serializable]
public class NonHuman
{
    public string val;
}

[Serializable]
public class Inner
{
    public string[] val;
}

[Serializable]
public class Outer
{
    public string[] val;
}

现在,让我们重新创建该屏幕截图中的内容:

//Create new dialog
Dialog dialog = new Dialog();

//Create nonhuman
dialog.nonHuman = new NonHuman();
dialog.nonHuman.val = "Once upon a time...";

//Create human
dialog.human = new Human();

//Create human inner 
dialog.human.inner = new Inner();
dialog.human.inner.val = new string[2];
dialog.human.inner.val[0] = "He is so scary";
dialog.human.inner.val[1] = "She is so beautiful";

//Create human outer 
dialog.human.outer = new Outer();
dialog.human.outer.val = new string[2];
dialog.human.outer.val[0] = "Hey watch out !";
dialog.human.outer.val[1] = "Look at her har !";

//Convert to Json
string json = JsonUtility.ToJson(dialog);
//Show result in the Console tab
Debug.Log(json);

生成的 Json 结果来自Debug.Log

{"human":{"inner":{"val":["He is so scary","She is so beautiful"]},"outer":{"val":["Hey watch out !","Look at her har !"]}},"nonHuman":{"val":"Once upon a time..."}}

看看我是如何通过创建屏幕截图中的数据结构,然后创建它的新实例来生成有效 json 的。这是最好的方法。如果这不是您想要的,那么您的图像是错误的。您可以轻松修改数据结构以获得所需的内容。

于 2017-07-28T06:54:26.160 回答