<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # JSON庫 在進行數據傳輸時JSON格式目前應用廣泛,因此從Lua對象與JSON字符串之間相互轉換是一個非常常見的功能;目前Lua也有幾個JSON庫,如:cjson、dkjson。其中cjson的語法嚴格(比如unicode \\u0020\\u7eaf),要求符合規范否則會解析失敗(如\\u002),而dkjson相對寬松,當然也可以通過修改cjson的源碼來完成一些特殊要求。而在使用dkjson時也沒有遇到性能問題,目前使用的就是dkjson。使用時要特別注意的是大部分JSON庫都僅支持UTF-8編碼;因此如果你的字符編碼是如GBK則需要先轉換為UTF-8然后進行處理。 ## 1.1 test_cjson.lua ``` local cjson = require("cjson") --lua對象到字符串 local obj = { id = 1, name = "zhangsan", age = nil, is_male = false, hobby = {"film", "music", "read"} } local str = cjson.encode(obj) ngx.say(str, "<br/>") --字符串到lua對象 str = '{"hobby":["film","music","read"],"is_male":false,"name":"zhangsan","id":1,"age":null}' local obj = cjson.decode(str) ngx.say(obj.age, "<br/>") ngx.say(obj.age == nil, "<br/>") ngx.say(obj.age == cjson.null, "<br/>") ngx.say(obj.hobby[1], "<br/>") --循環引用 obj = { id = 1 } obj.obj = obj -- Cannot serialise, excessive nesting --ngx.say(cjson.encode(obj), "<br/>") local cjson_safe = require("cjson.safe") --nil ngx.say(cjson_safe.encode(obj), "<br/>") ``` null將會轉換為cjson.null;循環引用會拋出異常Cannot serialise, excessive nesting,默認解析嵌套深度是1000,可以通過cjson.encode_max_depth()設置深度提高性能;使用cjson.safe不會拋出異常而是返回nil。 ## 1.2 openResty.conf配置文件 ``` location ~ /lua_cjson { default_type 'text/html'; lua_code_cache on; content_by_lua_file /usr/openResty/json/lua/test_cjson.lua; } ``` ## 1.3 查看結果 ``` {"is_male":false,"name":"zhangsan","hobby":["film","music","read"],"id":1} null false true film nil ``` lua-cjson文檔[http://www.kyne.com.au/~mark/software/lua-cjson-manual.html](http://www.kyne.com.au/~mark/software/lua-cjson-manual.html)。 接下來學習下dkjson。 ## 2.1 下載dkjson庫 ``` cd /usr/openResty/lualib wget http://dkolf.de/src/dkjson-lua.fsl/raw/dkjson.lua?name=16cbc26080996d9da827df42cb0844a25518eeb3 -O dkjson.lua ``` ## 2.2 test_dkjson.lua ``` local dkjson = require("dkjson") --lua對象到字符串 local obj = { id = 1, name = "zhangsan", age = nil, is_male = false, hobby = {"film", "music", "read"} } local str = dkjson.encode(obj, {indent = true}) ngx.say(str, "<br/>") --字符串到lua對象 str = '{"hobby":["film","music","read"],"is_male":false,"name":"zhangsan","id":1,"age":null}' local obj, pos, err = dkjson.decode(str, 1, nil) ngx.say(obj.age, "<br/>") ngx.say(obj.age == nil, "<br/>") ngx.say(obj.hobby[1], "<br/>") --循環引用 obj = { id = 1 } obj.obj = obj --reference cycle --ngx.say(dkjson.encode(obj), "<br/>") ``` 默認情況下解析的json的字符會有縮排和換行,使用{indent = true}配置將把所有內容放在一行。和cjson不同的是解析json字符串中的null時會得到nil。 ## 2.3 openResty.conf配置文件 ``` location ~ /lua_dkjson { default_type 'text/html'; lua_code_cache on; content_by_lua_file /usr/openResty/lua/json/test_dkjson.lua; } ``` ## 2.4 查看結果 ``` { "is_male":false, "name":"zhangsan", "hobby":["film","music","read"], "id":1 } nil true film ``` dkjson文檔[http://dkolf.de/src/dkjson-lua.fsl/home](http://dkolf.de/src/dkjson-lua.fsl/home)和[http://dkolf.de/src/dkjson-lua.fsl/wiki?name=Documentation](http://dkolf.de/src/dkjson-lua.fsl/wiki?name=Documentation)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看