我那个新网站框架还在做,最近考虑的是做一套标签格式规范。
要实现的功能主要有:无限层级嵌套(多级标签)以及允许子标签继承多个父标签。
为了使存储的数据最小化,我将标签格式规范制定如下:
1.2{44,55.66{888,999{0000}},77},3{66{666}}
标签层级关系:
-1.2(1.2意思是1和2拥有共同的子标签)
--44
--55.66
---888
---999
----0000
--77
-3
--66
---666
这里说一下我的系统中“标签”的概念是一个语义的集合,例如搜索“黑丝”“白丝”都能定位到“丝袜”及其所代表的标签ID。而多层级中的标签,并不像WordPress那样,子ID必须指定它是某个标签的子集,如果这样的话会导致需要重复定义。
我的系统实现方法是在某个父级出现二级分类时自动生成一个“父”+“子”的联合标签ID,在一个特殊的关联表中进行查询。同样道理,三级分类时又“父+子”这个标签ID再联合“孙”标签生成新的标签ID,查询N级标签时进行递归即可。
举个例子“图库”中的子分类“丝袜”和“美女”中的子分类“丝袜”都包含“丝袜”这个语义,我希望“图库-丝袜”和“美女-丝袜”展示不同的内容。如果按传统模式这是无法实现的,我系统中“图库-丝袜”和“美女-丝袜”则分别代表不同的ID。
现在主要问题是,由于标签字段采用最小化进行存储,在系统进行查询前需要将这个字符串展开。我希望将其还原成比较通用的json数组,这里就成了一个比较头疼的问题。
原始数据:
1.2{44,55.66{888,999{0000}},77},3{66{666}}
JSON:
{"1.2":{"44":"","55.66":{"888":"","999":{"0000":""}},"77":""},"3":{"66":{"666":""}}}
PHP:
array(
"1.2"=>array(
"44"=>"",
"55.66"=>array(
"888"=>"",
"999"=>array(
"0000"=>""
),
),
"77"=>"",
),
"3"=>array(
"66"=>array("666"=>""),
),
);
各位有没有什么从原始数据到JSON的转换思路?用PHP或JS实现都可以。