Is it possible to have nested array json?

不想你离开。 提交于 2019-12-02 09:10:48

I always advice people to create a class and generate json from it instead of trying to construct json from your head. It's easier if you do it this way and the generated json will always be valid and exaclty what you wanted.

This is what you want the json to look like:

Here is what the structure should look like:

[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;
}

Now, let's recreate what you have in that screenshot:

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

The generated Json result from 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..."}}

See how I generated the valid json by creating a data structure of what you have in your screenshot, then creating new instance of it. That's the best way to do this. If this is not exactly what you wanted then your image is wrong. You can easily modify the data structure to get what you want.

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

}

Option2:

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

Option3:

       {
    "id": 0,
    "title": "LEVEL",
    "value": [10, {
        "someKey": [2, {
            "someKey": [9, 1, 1]
        }, 5]
    }, 1]
   }
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!