指定json路径,验证某个key的value是某值,这样的配置文件规范有么?
本帖最后由 linlone 于 2014-09-09 12:17 编辑json数据非常深,我想设计一个配置文件,通过jason路径的方式,验证某个key的value是某值,比如我设想配置文件是如下格式:/a/b/uid: 765438 #含义:验证['a']['b']['uid']的值是765438
/a/c//uid: 765438 #含义:['a']['c']['uid']的值是765438
/a/d/[*](cat=26)/uid: 765438 #含义:['a']['d']得到一个list,取出list中包含cat=26的分支,验证下面的uid的值是765438
/a/e/uid: (765438) #含义:验证['a']['e']['uid']是一个list,验证其中是否包含765438的值以上是我设想的配置文件格式,但我想目前肯定有类似成熟的格式和方案,不知道有人知道不?
json本身非常适合程序解析,不需要自己再弄个格式了。用程序解析json非常快,也非常方便。
如果非要自己看的清楚,那还是xml是最直接的。只是效率和空间利用都低。
回复 2# sxcong
由于工作需要对json数据进行大量验证,每种验证都去写程序会变得很让人烦躁,感觉拖沓,所以做了如下自定义的规则: json_data = { 'a': {
'b': {
'uid': 765438,
},
'c': [
{
'c10': 33434,
'key': 123,
'name': 'hello',
'data': {
'songid': u"爱情",
},
},
{
'c20': 765438,
'c21': 9898,
'key': 456,
'name': 'hello',
'data': {
'songid': "1231",
},
},
{
'c3': 343,
'key': 789,
'data': {
'songid': "9821",
},
}
],
'd': {
'name': 'mnop',
},
'f': {
u'name': u'rst',
},
'g': {
'rank': 150,
},
'e': {
'uids': ,
}
},
}
verify_json_with_path(json_data, "a/d/name: mnop")
verify_json_with_path(json_data, "a/f/name: rst")
verify_json_with_path(json_data, "a/b/uid: 765438")
verify_json_with_path(json_data, "a/e/uids: (765438)")
verify_json_with_path(json_data, "a/c/1/c20: 765438")
verify_json_with_path(json_data, "a/c/*(c21=9898)/c20: 765438")
verify_json_with_path(json_data, "a/c: (key=456)")
verify_json_with_path(json_data, "a/c: (name=hello;key=456)")
verify_json_with_path(json_data, "a/c: (data/songid=1231;key=456)")
verify_json_with_path(json_data, "a/g: 10<rank<200")
verify_json_with_path(json_data, "a/c: 2<@()<4")
页:
[1]