Skip to content
A lightweight JSON library for Lua
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
bench Fixed indentation in benchmark util script Aug 14, 2015
test Added checking and tests for trailing garbage when decoding Mar 10, 2018
LICENSE Updated copyright year (2018 -> 2019) Apr 9, 2019 Fixed mistake in README Aug 30, 2015
json.lua Updated copyright year (2018 -> 2019) Apr 9, 2019


A lightweight JSON library for Lua


  • Implemented in pure Lua: works with 5.1, 5.2, 5.3 and JIT
  • Fast: generally outperforms other pure Lua JSON implementations (benchmark scripts)
  • Tiny: around 290sloc, 9kb
  • Proper error messages, eg: expected '}' or ',' at line 203 col 30


The json.lua file should be dropped into an existing project and required by it:

json = require "json"

The library provides the following functions:


Returns a string representing value encoded in JSON.

json.encode({ 1, 2, 3, { x = 10 } }) -- Returns '[1,2,3,{"x":10}]'


Returns a value representing the decoded JSON string.

json.decode('[1,2,3,{"x":10}]') -- Returns { 1, 2, 3, { x = 10 } }


  • Trying to encode values which are unrepresentable in JSON will never result in type conversion or other magic: sparse arrays, tables with mixed key types or invalid numbers (NaN, -inf, inf) will raise an error
  • null values contained within an array or object are converted to nil and are therefore lost upon decoding
  • Pretty encoding is not supported, json.encode() only encodes to a compact format


This library is free software; you can redistribute it and/or modify it under the terms of the MIT license. See LICENSE for details.

You can’t perform that action at this time.