lua里面如何require一串lua格式的字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lua里面如何require一串lua格式的字符串相关的知识,希望对你有一定的参考价值。

大概的意思是我有一大串lua格式的string
local n = "local b = 1"
requit(n)
print(b)
--输出为1

  代码如下:

    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。

     

参考技术A local str = "print(123)"
loadstring(str)()

 loadstring会返回给你一个函数,执行这个函数相当于把你之前load的函数执行一次

追问

因为我的是.lua文件肯定不止一行如果是多行的话还有什么办法可以处理?

追答

多行也一样 把所有字符串放在一起loadstring

本回答被提问者采纳

以上是关于lua里面如何require一串lua格式的字符串的主要内容,如果未能解决你的问题,请参考以下文章

Lua 字符串

Lua 字符串

Lua学习九----------Lua字符串

LUA require 搜索路径指定方法

Lua+OpenResty应用开发

Lua - gmatch科学记数法字符串到数字