美文网首页
ulua-cjson

ulua-cjson

作者: passiony | 来源:发表于2018-06-15 16:52 被阅读81次

    在Ulua项目中,一般网络数据实体类都会转换成Lua中的Table来完成,使用比类灵活方便,下面演示怎么在json和lua的Table之间进行转换。

    首先需要使用到Lua 的一个库 cJson库,ulua中已经集成了。

    cJson是一个高性能的JSON解析器和编码器,其性能比纯Lua库要高10~20倍。并且Lua Json完全支持UTF-8,无需以来其他非Lua/LuaJit相关包。

    示例代码

    JSON->Table

    local cjson = require "cjson"
    local sampleJson = [[{"age":"23","testArray":{"array":[8,9,11,14,25]},"Himi":"himigame.com"}]];
    --解析json字符串
    local data = cjson.decode(sampleJson);
    --打印json字符串中的age字段
    print(data["age"]);
    --打印数组中的第一个值(lua默认是从0开始计数)
    print(data["testArray"]["array"][1]);    
    

    Table->JSON

    local cjson = require "cjson"
    local retTable = {};    --最终产生json的表
    --顺序数值
    local intDatas = {};
    intDatas[1] = 100;
    intDatas[2] = "100";
    --数组
    local aryDatas = {};
    aryDatas[1] = {};
    aryDatas[1]["键11"] = "值11";
    aryDatas[1]["键12"] = "值12";
    aryDatas[2] = {};
    aryDatas[2]["键21"] = "值21";
    aryDatas[2]["键22"] = "值22";
    --对Table赋值
    retTable["键1"] = "值1";
    retTable[2] = 123;
    retTable["int_datas"] = intDatas;
    retTable["aryDatas"] = aryDatas;
    --将表数据编码成json字符串
    local jsonStr = cjson.encode(retTable);
    print(jsonStr);
    
    --结果是:
    {
      "int_datas": [
        100,
        "100"
      ],
      "2": 123,
      "键1": "值1",
      "aryDatas": [
        {
          "键12": "值12",
          "键11": "值11"
        },
        {
          "键21": "值21",
          "键22": "值22"
        }
      ]
    }
    

    相关文章

      网友评论

          本文标题:ulua-cjson

          本文链接:https://www.haomeiwen.com/subject/boumeftx.html