2017-07-28 23 views
0

私はjsonでちょっと新しいです。ですから、以下のような配列の値の中に配列の値を作りたいと思います。ネストされた配列jsonを持つことは可能ですか?

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

残念ながら、動作しません。データを読み込もうとするとエラーになります。

配列値の中に配列を持つことができるかどうか知りたいです。ありがとうございました。

+1

あなたのjsonは無効です。だからあなたはそのエラーを受けているのです。 jsonにエラーが発生した場合は、[here](http://json2csharp.com/)をチェックしてください。 – 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); 

Debug.Logから生成されたJSON結果:

{"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)を持っています。彼は自分のコードで条件を作るための文字列としてキー名を取得したい。残念ながら、彼の問題は、Web開発のためのjavascriptであって統一ではなかったようです。 –

+0

私はあなたが "キー"で何を意味するのか分かりません。元の投稿はキーとは関係のないネストされた配列について話しています。 – Programmer

+0

あなたはそれが動作しているかどうか、私に尋ねましたが、それは答えです。しかし、あなたのjson構造を見れば、私が望むもののように見えますが、動作しているかどうかは分かりません私のコードを呼び出してください。私も英語では良くないので、問題が本当に何であるかについて人々を混乱させるかもしれません。 –

関連する問題