目录
  • 前言
    • 转义字符
    • 性能优化
  • 实现四则运算
    • 总结

      前言

      在上一篇中介绍了xjson的功能特性以及使用查询语法快速方便的获取JSON中的值。

      go json编译原理XJSON实现四则运算

      同时这次也更新了一个版本,主要是两个升级:

      • 对转义字符的支持。
      • 性能优化,大约提升了30%⬆️。

      转义字符

      先说第一个转义字符,不管是原始JSON字符串中存在转义字符,还是查询语法中存在转义字符都已经支持,具体用法如下:

      str = `{"1a.b.[]":"b"}`
          get = Get(str, "1a\\.b\\.\\[\\]")
          assert.Equal(t, get.String(), "b")
          str = `{".":"b"}`
          get = Get(str, "\\.")
          assert.Equal(t, get.String(), "b")
          str = `{"a":"{\"a\":\"123\"}"}`
          get = Get(str, "a")
          fmt.Println(get)
          assert.Equal(t, get.String(), "{\"a\":\"123\"}")
          assert.Equal(t, Get(get.String(), "a").String(), "123")
          str = `{"a":"{\"a\":[1,2]}"}`
          get = Get(str, "a")
          fmt.Println(get)
          assert.Equal(t, get.String(), "{\"a\":[1,2]}")
          assert.Equal(t, Get(get.String(), "a[0]").Int(), 1)

      性能优化

      性能也有部分优化,大约比上一版本提升了 30%。

      pkg: github.com/crossoverJie/xjson/benckmark
      cpu: Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
      BenchmarkDecode-12               14968         77130 ns/op       44959 B/op        1546 allocs/op
      PASS
      ------------------------------------
      pkg: github.com/crossoverJie/xjson/benckmark
      cpu: Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
      BenchmarkDecode-12               19136         62960 ns/op       41593 B/op        1407 allocs/op
      PASS

      但总体来说还有不少优化空间,主要是上限毕竟低,和官方库比还是有不小的差距。

      实现四则运算

      接下来聊聊四则运算是如何实现的,这本身算是一个比较有意思的feature,虽然用的场景不多

      声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。