当前位置: 首页 > news >正文

网站开发规模和工作量的计算dw网页制作成品12页

网站开发规模和工作量的计算,dw网页制作成品12页,信阳建设企业网站,找平面图的网站用 JSON 保存后台配置数据 在前台数据交换中,优其 web应用领域,JSON以其简单性和可扩展性“大有替代”xml 之势(夸张地说)。本文简单介绍了 json 作为配置的存取在后台操作的便利性,希望本文能抛砖引玉,让J…

用 JSON 保存后台配置数据

 

在前台数据交换中,优其 web应用领域,JSON以其简单性和可扩展性“大有替代”xml 之势(夸张地说)。
本文简单介绍了 json 作为配置的存取在后台操作的便利性,希望本文能抛砖引玉,让JSON给大家后台配置存取提供更多便利。

 

编辑器: JSON 在线编辑器 JsonEditor V1.03.2

 

 

在一些中/小型应用程序中,配置文件是必须的。采用什么格式的配置文件一直困扰着很多开发人员。实践中常用的有四种类型:
1) 采用 c/c++ 的结构体存储。

      虽然很原始,便还是在很多场景可以看到,原因是免解析。缺点太多了,比如不易扩展,可读性差。

2)采用 "名称 = 值" 的行存储,或类似 windows 系统 ini 文件的格式。 通过 xxx_set/xxx_get 的方法进行存取.

     在各种应用中都很常见,优其小型嵌入式设备上很多时候配置采用类似的方法。

3)采用相对复杂的分段/分级配置。

     如 Apache/Ngix 等的配置文件,再如 cisco 的 consle 配置。优点时文本方式,便于编辑,有良好的结构性。

     缺点解析起来相对复杂,需要为应用定制配置格式。

4)采用 xml 格式保存配置。

     在大型应用,优其 java,.net 的项目中应用的优其多。原因是平台或操作语言提供了 xml 的操作 API。

     在小型 c/c++ 程序中, 如果你有 DOM/XML 的操作 API, 依然是是可行的。

 

最近在一些小型项目的实践中, 保存配置文件,我是越来越倾向于使用 JSON 了。原因是
1) JSON 像 XML  一样有的良好结构性。

2) JSON 固有的数据类型 object/string/number/true/false 意义明确,便于表达.

3) JSON 语法简单,解析器易实现,同时便于解析和格式化输出。(JSON的官方站点上有各种语言的解析器)

4) 配置层次性好,最近又修改了一个开源 JSON "树型" 编辑器。用工具编辑配置文件,感觉很省事。

 

说了这多, 还未到正文。下来用示例来说明下吧。后文件示例以 c 代码作为伪代码展示。
假设你已经有如下 JSON 的操作 API (如果没有可以很容易自己实现封装):

1)  json_t   /*json 类型 */

2)  json_t * json_parse_string(const char * json_string);   /* 解析 json 树 */
3)  const char * json_get_name(json_t * json, const char * path); /* 获取节点名 */
4)  const char * json_get_str(json_t * json, const char * path); /* 获取节点值:string  类型 */
5)  const char * json_get_int(json_t * json, const char * path); /* 获取节点值:int 类型 */
6) FOREACH_IN_JSON_CHILD(json, path, pchild) /* 宏用于遍历子节点 */

  

以下为假想配置示例:

 

 

1) 加载配置文件,解析成 JSON 树.

      readfile(conf_buf, from_file);     /*加载配置 */

 

      json_t * jcon = json_parse_string(conf_buf);

 

2)遍历第一层配置。

     json_t *  jobj;

 

    FOREACH_IN_JSON_CHILD(jconf, "", jobj)

    {

          const char * pname = json_get_name(jobj));

          const char * pvalue = json_get_str(jobj);

 

          if (compare("Root", pname))

              call_xxx_set_root(); /* 把值传给处理函数 */

          else if (compare("Connection", pname))

              call_xxx_set_connection(); /* 把值传给处理函数 */

          else if (compare("Listen", pname))

              call_xxx_set_listen(jobj); /* 把值传给处理函数 */

         ....  /* 其它节点 */

    }

3)对子节点进行处理,以 Listen 数组下的结点为例。

     从上面我们可以看到 Listen是个数组,其下的节点数目是不确定的,依然使用 foreach 的形式进行遍历.

    int call_xxx_set_lisen(json_t * jconf)

    {

         json_t *  jobj;

 

         /* 从数组中取出一个节点 */

         FOREACH_IN_JSON_CHILD(jconf, "", jobj)

         {

               /* 对数组中的每一个原素 */

               const char * ip = json_get_name(jobj, "ip"));

               short int  port  = json_get_int(jobj, "port");

 

              ....  /* 这里加上应用该配置的函数 */

          }

    }

 

4)其它节点类似。

 

附示例代码:

  

 

小结:

JSON 的如下特性决定了 json 非常适合配置存储:

1) JSON 具有良好的树型结构,便于程序操作。

2) JSON 对像的值可以是一个普通对象也可以是一个“集合”或数组,使用FOREACH_IN_JSON_CHILD()的形式对子节点遍历。

3) JSON 对象便于序列化成 string 存储/传递.

4) JSON 便于解析/格式化

5) 因为天太晚了该睡了,此处略去 nK 字吧, 呵呵

 

http://www.yayakq.cn/news/485676/

相关文章:

  • 昆明航空公司官方网站广告制作公司口号
  • 网站开发基础课程网站首页权重
  • 海南网站运营托管咨询地方商城网站
  • 哪里有建设网站中的视频下载成都网站排名公司
  • 响应式网站开发的理解网站建设需求说明书怎么写
  • 家装网站建设公司哪家好做网站是怎么赚钱的
  • 新浪云建设自己的网站网站推广业务
  • 云南省住房和城乡建设厅勘察设计处网站做环评需要关注哪些网站
  • 网站子目录怎么做网站建设下什么费用
  • 事业单位门户网站建设包含内容网站基本模块
  • 四川煤矿基本建设工程公司网站wordpress图片优化加速
  • 化妆品的网站设计方案高端网站定制策划
  • 织梦技术个人网站模板更改wordpress传文件尺寸
  • 郑州网站建设专注乐云seo网站外链怎么发布
  • 做淘宝主页网站群晖wordpress插件
  • 游戏网站怎么做seoc语言做的网站有什么优缺点
  • 建设网站需要什么技术人员工程公司账务处理分录
  • 太原企业网站制作公司教育机构排名全国十大教育机构排名
  • 公司和网站备案查询出售东西的网站怎么做
  • 如何开通免费网站发布软文的平台有哪些
  • 北京网站seo价格软件毕设代做网站
  • 免费建网站流程硬件开发项目流程
  • 佛山网站建设wantsun品牌设计法则
  • 国土局网站建设制度未来销售最好的行业
  • 凡科网站代码html5网站管理系统
  • 深圳网站建设信科网络佛山高端网页制作
  • 潍坊网站建设哪家专业百度小程序app下载
  • 网站建设那里上海中学数学
  • uzi视频网站谁做的娱乐视频直播网站建设
  • 如何用表格做网站公司网站开发外包公司