Json 存储三级菜单这样写正确吗?

2017-10-17 23:33:43 +08:00
 jmyz0455

有个类似 学校>专业>班别:学生人数 的数据结构,需要用到 json 来存储,这种类似三级菜单的 json 我还没写过,认真看了 http://www.json.org ,写出

{
    "aaa": [
        {
            "aa1": [
                {
                    "a11": "111"
                }
            ]
        }
    ],
    "bbb": [
        {
            "bb1": [
                {
                    "b11": "111"
                }
            ]
        },
        {
            "bb2": [
                {
                    "b21": "111"
                },
                {
                    "b22": "222"
                }
            ]
        }
    ]
}

格式在 www.bejson.com 校验过没问题,但是看着很“啰嗦”。网上貌似没人提过多级 json 的写法。请问用 json 写三级的数据还有更简洁的写法吗?

3119 次点击
所在节点    程序员
10 条回复
markocen
2017-10-18 07:09:19 +08:00
为啥每层都包在一个数组里
jmyz0455
2017-10-18 07:29:30 +08:00
@markocen 因为每一层都有可能是有多个数据的,不包数组的话在 www.bejson.com 里校验会出错,请问你觉得可以再怎么简化。
bxb100
2017-10-18 10:26:36 +08:00
我是用 ajax
mkeith
2017-10-18 14:45:47 +08:00
@markocen 数组里面顺序不会变吧
jmyz0455
2017-10-18 15:39:33 +08:00
@mkeith 如果不怕顺序变呢?结构还可以更简单一点?
jmyz0455
2017-10-18 15:39:58 +08:00
@bxb100 ?什么意思
ztaober
2017-10-18 17:05:10 +08:00
学校-专业-班别-学生人数 同级别 list 存不可以吗 操作的时候在处理
jmyz0455
2017-10-18 19:48:12 +08:00
@ztaober 问题是现在希望请求一次,获取一个 json 数据就完事。数据量不大,就是层级复杂,我想在单个 json 数据上减少层数而不是分开几个地方储存。
seognilV2
2017-10-18 20:53:07 +08:00
只用一层的方案:

school1: {
from: null,
name: '野鸡大学',
sub: ['class1', 'class2'],
type: 'school'
}

class1: {
from: 'school1',
name: '三年二班',
sub: ['student1', 'student2'],
type: 'class'
}

student1: {
from: 'class1',
name: '李狗蛋',
sub: null,
type: 'student'
}
seognilV2
2017-10-18 20:56:25 +08:00
类似这样
好处是灵活,无论增删改查
另外我建议任何情况下 demo 的假数据都写得真实一点比较好

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/398487

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX