1

私はjsonを初めて使用し、データ形式に本当に苦労しています。
次の形式にする必要があります:music.genre.albumですが、 genre.albumだけでも問題ありません。

誰かが次の構造を手伝ってもらえますか?getJSONを使用して反復処理します。

{"music": [{

"Genre_Blues": [{
    "Album": "224",
    "Path": "images/library/",
    "FileName": "AlbumCover224.png"
    },
    {
    "Album": "277",
    "Path": "images/library/",
    "FileName": "AlbumCover277.png"
    },
    {
    "Album": "885",
    "Path": "images/library/",
    "FileName": "AlbumCover885.png"
    }],
"Genre_Jazz": [{
    "Album": "442",
    "Path": "images/library/",
    "FileName": "AlbumCover442.png"
    },
    {
    "Album": "467",
    "Path": "images/library/",
    "FileName": "AlbumCover467.png"
    },
    {
    "Album": "724",
    "Path": "images/library/",
    "FileName": "AlbumCover724.png"
    }],
"Genre_Rock": [{
    "Album": "022",
    "Path": "images/library/",
    "FileName": "AlbumCover022.png"
    },
    {
    "Album": "609",
    "Path": "images/library/",
    "FileName": "AlbumCover609.png"
    },
    {
    "Album": "067",
    "Path": "images/library/",
    "FileName": "AlbumCover067.png"
    }]
  }]

}
4

2 に答える 2

1

JSONはJavaScriptと同じです(そうであるため)。

ジャンル内に複数のものを格納したい場合(これはジャンルが何であるか...)、それは配列である必要があります。

しかし、通常のJSオブジェクトと配列について考えてみてください。

music = {};
music.genre = {};
music.genre.blues = [];
music.genre.blues[0] = {};

次のように書くことができます:

json = { 
    music : {
        genre : {
            blues : [],
            rock  : [],
            soul  : []
        }
    }
}

次に、次のようになります。

json.music.genre.blues[0].album_title;  // "Some Kind of Blue"
json.music.genre.blues[0].album_artist; // "Miles Davis"

ブルースやロックなどを通過するループを設定できます...

それらをループさせたくない場合は、8つの「アルバム」プロパティを持つオブジェクトを作成できないため、それらにインデックスを付ける他の方法を見つける必要があります。たぶん、その時点でタイトル別にリストすることができます... ...しかし、それはそれほど役に立ちません。その時点でキックの配列を削除しているだけです。

ジャンルが配列になるように設定することもできます(これは現在あなたが持っているものです)。

だからあなたは持っているかもしれません:

music = {
    genre : [
        {
            name : "Blues",
            albums : [
                {
                    title : "Some Kind of Blue",
                    artist : "Miles Davis"
                }
             ]
         },  {
             name : "Soul",
             albums : [
                 {
                     title : "Innervisions",
                     artist : "Stevie Wonder"
                 }, {
                     title : "Talking Book",
                     artist : "Stevie Wonder"
                 }
             ]
         }
     ]
};

次に、次のようになります。

music.genre[0].name;             // "Blues"
music.genre[1].albums[0].artist; // "Stevie Wonder"

これの利点は次のように言うことです:

music.genre.forEach(function (genre) { console.log(genre.name); }); // "Blues", "Soul"

music.genre.forEach(function (genre) {
    console.log("---" + genre.name + "---");
    genre.albums.forEach(function (album) {
        console.log("Title: " + album.title);
        console.log("Artist: " + album.artist);
    });
});

それはすべてあなたがそれでやりたいことに帰着します。それが何であるかを知っている限り、あなたはあなたがやりたいことを何でもする自由を持っています。

于 2012-08-17T01:18:42.063 に答える
0

もうすぐです。あなたがする必要があるのは[]

于 2012-08-17T00:31:00.057 に答える