linlone 发表于 2014-09-09 12:05

指定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的值以上是我设想的配置文件格式,但我想目前肯定有类似成熟的格式和方案,不知道有人知道不?

sxcong 发表于 2014-09-11 16:44

json本身非常适合程序解析,不需要自己再弄个格式了。用程序解析json非常快,也非常方便。
如果非要自己看的清楚,那还是xml是最直接的。只是效率和空间利用都低。

linlone 发表于 2014-09-12 10:26

回复 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]
查看完整版本: 指定json路径,验证某个key的value是某值,这样的配置文件规范有么?