JSON

从零开始的JSON库教程(七):生成器(2)

字号+ 作者:H5之家 来源:H5之家 2016-12-24 10:03 我要评论( )

因每个临时变量只用了一次,我们可以把代码压缩成一行: case LEPT_NUMBER: c-top -= 32 - sprintf(lept_context_push(c, 32 ), %.17g , v-u.n); break ;5. 总结与练习 我们在此单元中简介了 JSON 的生成功能和 lep

因每个临时变量只用了一次,我们可以把代码压缩成一行:

case LEPT_NUMBER: c->top -= 32 - sprintf(lept_context_push(c, 32), "%.17g", v->u.n); break; 5. 总结与练习

我们在此单元中简介了 JSON 的生成功能和 leptjson 中的实现方式。

leptjson 重复利用了 lept_context 中的数据结构作为输出缓冲,可以节省代码量。

生成通常比解析简单(一个例外是 RapidJSON 自行实现了浮点数至字符串的算法),余下的 3 种 JSON 类型就当作练习吧:

  • 由于有两个地方需要生成字符串(JSON 字符串和对象类型),所以先实现 lept_stringify_string()。注意,字符串的语法比较复杂,一些字符必须转义,其他少于 0x20 的字符需要转义为 \u00xx 形式。

  • 直接在 lept_stringify_value() 的 switch 内实现 JSON 数组和对象类型的生成。这些实现里都会递归调用 lept_stringify_value() 。

  • 在你的 lept_stringify_string() 是否使用了多次 PUTC()?如果是,它每次输出一个字符时,都要检测缓冲区是否有足够空间(不够时需扩展)。能否优化这部分的性能?这种优化有什么代价么?

  • 分享给小伙伴们:

    本文标签: JSON/">JSON

    相关文章

    发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

  • 本类最热新闻

  •  

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • Json按某个键的值进行排序

      Json按某个键的值进行排序

      2016-12-23 18:07

    • php递归json类分享

      php递归json类分享

      2016-12-23 18:00

    • iOS JSON数据NSLog小技巧

      iOS JSON数据NSLog小技巧

      2016-12-23 17:09

    • Mysql Json支持

      Mysql Json支持

      2016-12-22 13:04

    网友点评
    a