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 回答