首页 > 解决方案 > 在 lua 中创建 Json 对象

问题描述

我试图按照以下文章进行操作,但一直找不到模块 Json 模块。

将 JSON 字符串转换为 Lua 表?

根据文章,我正在从 luarocks 安装 Json-lua。然后我只是复制和粘贴代码。当我运行我的 lua 脚本时,我收到以下错误消息。

我究竟做错了什么??

root@fusion01:# luarocks install json-lua
Installing https://rocks.moonscript.org/json-lua-0.1-3.rockspec...
Using https://rocks.moonscript.org/json-lua-0.1-3.rockspec... switching to 'build' mode
Cloning into 'json-lua'...
remote: Enumerating objects: 7, done.
remote: Counting objects: 100% (7/7), done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 7 (delta 0), reused 4 (delta 0), pack-reused 0
Receiving objects: 100% (7/7), 16.29 KiB | 0 bytes/s, done.
Checking connectivity... done.
Do not use 'module' as a build type. Use 'builtin' instead.
Updating manifest for /usr/local/lib/luarocks/rocks
json-lua 0.1-3 is now built and installed in /usr/local (license: CC)

root@fusion01:# lua sendjson.lua         
lua: sendjson.lua:21: module 'json' not found:
        no field package.preload['json']
        no file '/usr/local/share/lua/5.2/json.lua'
        no file '/usr/local/share/lua/5.2/json/init.lua'
        no file '/usr/local/lib/lua/5.2/json.lua'
        no file '/usr/local/lib/lua/5.2/json/init.lua'
        no file '/usr/share/lua/5.2/json.lua'
        no file '/usr/share/lua/5.2/json/init.lua'
        no file './json.lua'
        no file '/usr/local/lib/lua/5.2/json.so'
        no file '/usr/lib/x86_64-linux-gnu/lua/5.2/json.so'
        no file '/usr/lib/lua/5.2/json.so'
        no file '/usr/local/lib/lua/5.2/loadall.so'
        no file './json.so'
stack traceback:
        [C]: in function 'require'
        sendjson.lua:21: in main chunk
        [C]: in ?
root@fusion01:# cat sendjson.lua 
#!/bin/lua


--local raw_json_text    = JSON:encode(data)
--local pretty_json_text = JSON:encode_pretty(data)

local json = require "json"

local t = { 
    ["name1"] = "value1",
    ["name2"] = { 1, false, true, 23.54, "a \021 string" },
    name3 = json.null
}

local encode = json:encode (t)
print (encode)  --> {"name1":"value1","name3":null,"name2":[1,false,true,23.54,"a \u0015 string"]}

local decode = json:decode( encode )
root@fusion01:# 

标签: jsonlualuarocks

解决方案


推荐阅读