Comments (5)
I'd guess that json.lua is not in nginx's (maybe special) $LUA_PATH
?
from json.lua.
ahhh, it's present in nginx.conf:
lua_package_path "/usr/local/lib/lua/?.lua;;";
from json.lua.
If it's possible, can you pls provide example with NGINX? Thanks @guysv
from json.lua.
One more very strange thing: if I use code below in nginx.conf:
location /test { content_by_lua_block { local json = require("json") ngx.say(json.encode({ 1, 2, 3, { x = 10 } })) } }
It works fine
[1,2,3,{"x":10}]
from json.lua.
Isn't a lib related issue but a third-party module limitation (openresty/lua-nginx-module
).
https://github.com/openresty/lua-nginx-module/blob/.../src/ngx_http_lua_output.c#L285
According to the documentation, the ngx.say function expects a array table (with numeric index) as a parameter and not a table with string-type indexes.
[error] 1265#1265: *64 lua entry thread aborted: runtime error: content_by_lua(default.conf:17):3: bad argument #1 to 'say' (non-array table found)
stack traceback:
coroutine 0:
[C]: in function 'say'
Non-array table arguments will cause a Lua exception to be thrown.
https://github.com/openresty/lua-nginx-module#ngxprint:~:text=Non%2Darray%20table...
A possible solution would be to use the lib itself to encode to string:
content_by_lua_block {
local json = require("json")
local decoded = json.decode('[1,2,3,{"x":10}]')
local encoded = json.encode(decoded)
ngx.say(encoded)
}
Tests:
content_by_lua_block {
ngx.say({["test"] = "ok"}) -- error
}
--
content_by_lua_block {
ngx.say({1, 2, 3, {["test"] = "ok"}}) -- error
}
--
content_by_lua_block {
ngx.say({1, 2, 3}) -- works
}
--
content_by_lua_block {
ngx.say({1, 2, 3, {1, 2}}) -- works
}
--
content_by_lua_block {
ngx.say({1, 2, 3, {[1] = "ok"}}) -- works
}
from json.lua.
Related Issues (20)
- Floating point numbers with dot causing error HOT 2
- Unable to encode 'sparse array's HOT 5
- 一个json字符串,decode成table,之后再把这个table encode成json,俩个json不一样! HOT 5
- How to install it for Tengine
- Empty object encodes as array HOT 2
- decode simple table error HOT 1
- Large numbers lose precision when decoding HOT 2
- bad argument #1 to 'rawget' (table expected, got string)
- decoding of object with 'duplicate' key HOT 2
- Annotated Tags Please
- There is an idea to optimize the code for json.lua HOT 25
- json encode error HOT 2
- pcall json.decode failing, "attempt to call a table value" HOT 1
- No functions support HOT 1
- Output is all on one line
- Uh how do i use this in lua... the readme.md was very vague HOT 5
- Large numbers serialized incorrectly HOT 3
- Encoding runs in worst-case quadratic time HOT 4
- Decoding fails for JSON with array of strings within an object.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from json.lua.