Json 存储三级菜单这样写正确吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
jmyz0455
V2EX    程序员

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

  jmyz0455 2017 年 10 月 17 日 3550 次点击
这是一个创建于 3078 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

10 条回复    2017-10-18 20:56:25 +08:00
markocen
    1
markocen  
   2017 年 10 月 18 日 via Android
为啥每层都包在一个数组里
jmyz0455
    2
jmyz0455  
OP
   2017 年 10 月 18 日
@markocen 因为每一层都有可能是有多个数据的,不包数组的话在 www.bejson.com 里校验会出错,请问你觉得可以再怎么简化。
bxb100
    3
bxb100  
   2017 年 10 月 18 日 via Android
我是用 ajax
mkeith
    4
mkeith  
   2017 年 10 月 18 日
@markocen 数组里面顺序不会变吧
jmyz0455
    5
jmyz0455  
OP
   2017 年 10 月 18 日
@mkeith 如果不怕顺序变呢?结构还可以更简单一点?
jmyz0455
    6
jmyz0455  
OP
   2017 年 10 月 18 日
@bxb100 ?什么意思
ztaober
    7
ztaober  
   2017 年 10 月 18 日
学校-专业-班别-学生人数 同级别 list 存不可以吗 操作的时候在处理
jmyz0455
    8
jmyz0455  
OP
   2017 年 10 月 18 日
@ztaober 问题是现在希望请求一次,获取一个 json 数据就完事。数据量不大,就是层级复杂,我想在单个 json 数据上减少层数而不是分开几个地方储存。
seognilV2
    9
seognilV2  
   2017 年 10 月 18 日 via Android
只用一层的方案:

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
    10
seognilV2  
   2017 年 10 月 18 日 via Android
类似这样
好处是灵活,无论增删改查
另外我建议任何情况下 demo 的假数据都写得真实一点比较好
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     842 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 29ms UTC 20:28 PVG 04:28 LAX 13:28 JFK 16:28
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86