在 Lua 中解析 JSON 字符串不使用第三方库的话,可以使用 Lua 自带的 `loadstring` 函数和 `string.sub` 函数来实现。具体步骤如下:
1. 将 JSON 字符串转换为 Lua 代码字符串。这里需要将 JSON 中的 `{}` 转换为 `[]`,并将 `true`、`false` 和 `null` 分别替换为 `true`、`false` 和 `nil`。
2. 使用 `loadstring` 函数将 Lua 代码字符串编译为函数。
3. 调用编译后的函数,并传入一个空表作为参数。该函数会将解析后的 Lua 对象存储到该表中。
以下是一个示例代码:
```lua
local json = '{"name":"John","age":30,"city":"New York"}'
-- 将 JSON 字符串转换为 Lua 代码字符串
local luaCode = string.gsub(json, "{", "[")
luaCode = string.gsub(luaCode, "}", "]")
luaCode = string.gsub(luaCode, "true", "true")
luaCode = string.gsub(luaCode, "false", "false")
luaCode = string.gsub(luaCode, "null", "nil")
-- 编译 Lua 代码字符串为函数
local func = loadstring("return " .. luaCode)
-- 调用函数,并传入一个空表作为参数
local obj = {}
setfenv(func, {table=table, obj=obj})()
obj = obj[1]
-- 从 Lua 对象中获取属性值
local name = obj.name
local age = obj.age
local city = obj.city
-- 输出属性值
print("Name: " .. name)
print("Age: " .. age)
print("City: " .. city)
```
输出结果:
```
Name: John
Age: 30
City: New York