如何格式化json数据

时间:2012-08-17 00:29:00

标签: jquery json getjson

我是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"
    }]
  }]

}

2 个答案:

答案 0 :(得分: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);
    });
});

这一切都取决于你想用它做什么。 只要你知道那是什么,你就可以自由地做任何你想做的事。

答案 1 :(得分:0)

那里几乎 。您需要做的就是取出[]