2017-07-28 79 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結構,它看起來像我想要的,但我不知道它是否工作或不在我的代碼中打電話,我的英語也不好,所以也許會讓人們誤解問題的真相。 –