我应该如何构建我的mysql数据库以允许二维JSON输出?

时间:2012-12-20 15:48:08

标签: mysql json

有些愚蠢的问题,我敢肯定,我确实需要答案。

我正在做这个简短的学习项目,我需要让数据库输出一些JSON。

我确实知道如何构造表格,但由于我的历史很短,我还没弄清楚如何处理表格单元格中的对象数组(在本例中,是pointsOfInterest和events)。我应该为它们制作单独的表格,并以某种方式为每个表格提供单独的表格吗?我如何在php中处理它们?

TL:DR;我应该如何构建我的数据库以允许像这样的JSON输出?:

{id: 'oyafestivalen',
 displayName: 'Øyafestivalen 2011',
 description: 'Music festival in Middelalderparken, Oslo',
 pointsOfInterest: [
   {id: 'sjosiden',
    displayName: 'Sjøsiden',
    lat: 59.904453,
    lng: 10.762905},
   {id:   'vika',
    displayName: 'Vika',
    lat:  59.906086,
    lng: 10.763276},
   {type: 'wc',     // type is optional, defaults to 'venue'
    // displayName optional, not specified here
    lat: 59.903625,
    lng: 10.763276},
   {type: 'firstaid',
    lat: 59.903625,
    lng: 10.763276},
   {type: 'entrance',
    lat: 59.903625,
    lng: 10.763276},
   {type: 'exit',
    lat: 59.903625,
    lng: 10.763276},
   {type: 'camping',
    lat: 59.903625,
    lng: 10.763276},
   {type: 'food',
    displayName: 'Random restaurant name',
    description: 'They serve good food. Vegetarian-friendly',
    lat: 59.903625,
    lng: 10.763276},
   {type: 'drinks',
    displayName: 'Random bar name',
    lat: 59.903625,
    lng: 10.763029}
 ],
 events: [
   {displayName: 'Kyuss Lives!',
    venue: 'sjosiden',
    startDateTime: '2011-08-13T19:30',
    endDateTime: '2011-08-13T21:00',
    tags: ['rock', 'stoner']},
   {displayName: 'Givers',
    description: 'Givers are an indie pop group from Lafayette, Louisiana. The band is made up     of...',
    venue: 'vika',
    // Default one hour duration if no endTime
    startDateTime: '2011-08-13T18:05',
    tags: ['pop', 'indie']}
 ]

1 个答案:

答案 0 :(得分:0)

我不可能告诉你表格的结构,也不能告诉你为获得输出而需要执行的确切查询,但我可以告诉你:

您无法从SQL查询中生成此类输出。但是,您可以使用多个查询构造此类输出,并使用PHP操作其输出以构建多维数组。例如,pointsOfInterest的内容应该是单独的查询。为了帮助您获得所需的输出,请在PHP中使用print_r()来检查数组的运行方式。获得所需内容后,使用json_encode()将数组转换为PHP中的json字符串。