Use a fallback when a JSON field is missing.

optional fields A missing JSON property becomes `nil` in Lua, so `or` can provide a default value.

Missing Field

fallback
missing_field.lua
Replay: real traced execution (multi-file project)
local fallback = "unknown"
local text = '{"name":"Ada"}'
local name = require("cjson").decode(text).name
local city = require("cjson").decode(text).city or fallback
print("name=" .. name)
print("city=" .. city)
local fallback = "n/a"
local text = '{"name":"Ada"}'
local name = require("cjson").decode(text).name
local city = require("cjson").decode(text).city or fallback
print("name=" .. name)
print("city=" .. city)
local fallback = "missing"
local text = '{"name":"Ada"}'
local name = require("cjson").decode(text).name
local city = require("cjson").decode(text).city or fallback
print("name=" .. name)
print("city=" .. city)
  1. fallback ← unknown, text ← {"name":"Ada"}, name ← Ada, city ← unknown

    1local fallback→ unknown = "unknown" --@fallback="n/a", "missing"2local text→ {"name":"Ada"} = '{"name":"Ada"}'3local name→ Ada = require("cjson").decode(text{"name":"Ada"}).name4local city→ unknown = require("cjson").decode(text{"name":"Ada"}).city or fallbackunknown5print("name=" .. nameAda)6print("city=" .. cityunknown)
    outputname=Ada
    city=unknown
  1. fallback ← n/a, text ← {"name":"Ada"}, name ← Ada, city ← n/a

    1local fallback→ n/a = "n/a"2local text→ {"name":"Ada"} = '{"name":"Ada"}'3local name→ Ada = require("cjson").decode(text{"name":"Ada"}).name4local city→ n/a = require("cjson").decode(text{"name":"Ada"}).city or fallbackn/a5print("name=" .. nameAda)6print("city=" .. cityn/a)
    outputname=Ada
    city=n/a
  1. fallback ← missing, text ← {"name":"Ada"}, name ← Ada, city ← missing

    1local fallback→ missing = "missing"2local text→ {"name":"Ada"} = '{"name":"Ada"}'3local name→ Ada = require("cjson").decode(text{"name":"Ada"}).name4local city→ missing = require("cjson").decode(text{"name":"Ada"}).city or fallbackmissing5print("name=" .. nameAda)6print("city=" .. citymissing)
    outputname=Ada
    city=missing