2017-07-28 95 views
0

我对json很有新意。所以我想在下面的数组的值内创建一个数组值。是否可以嵌套数组json?

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

但不幸的是,它不工作。当我试图读取数据时,它给了我一个错误。我想知道是否有可能在一个数组中的数组值。谢谢。

+1

您的json无效。这就是为什么你得到这个错误。检查[这里](http://json2csharp.com/)当你的JSON出现错误时。 – Programmer

+0

加上1表示有用的链接。那么我如何正确写入?我不知道如何实现这一点。 –

+1

你想要保存什么?如果不知道这一点,我真的无能为力。如果你可以把你想要保存的类的类或例子看起来像然后我可以告诉你什么JSON应该看起来像。 – Programmer

回答

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] 
    } 
+0

我想使用10就像一个有一些数组值的标志。如果我理解正确,那么10,[2,3,5],1是一个单独的值。 –

+0

JSON是关于键值对的,你无法从字面上理解你想要的 –

+0

这是什么适合你的需求?我编辑了我的答案。 –

2

我总是建议人们创建一个类,从它生成的,而不是试图建构JSON从JSON你的头。如果你这样做,并且生成的json将永远是有效的,并且可以实现你想要的东西,这会更容易。

这是你想要的JSON是什么样子:

enter image description here

这里的结构应该是什么样子:

[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。这是做到这一点的最佳方式。如果这不是你想要的,那么你的形象是错误的。您可以轻松修改数据结构以获取所需内容。

+0

其实我不知道它是否正常工作,因为我仍然试图从我的代码中获得密钥。我做了一些谷歌搜索,我发现这个人看起来像面对像我一样的[问题](https://stackoverflow.com/questions/22565077/javascript-get-json-key-name)。正如你可以在他的线程中看到的,他有时在他的数据中有不同的键(typeA和typeB)。他希望将密钥名称作为字符串在代码中创建条件。不幸的是,它看起来像他的问题是与JavaScript的Web开发,而不是统一。 –

+0

我不知道你是什么意思的“钥匙”。你原来的帖子是在谈论与键无关的嵌套数组。同时,你的问题中的图像也在谈论数组。我认为你需要改写你的问题,并明确你到底在干什么 – Programmer

+0

你问我是否在工作,这就是答案,但如果我看看你的JSON结构,它看起来像我想要的,但我不知道它是否工作或不在我的代码中打电话,我的英语也不好,所以也许会让人们误解问题的真相。 –