cocos2dx lua解析json
lua中的json解析相比c++的要简单点,lua中主要是通过table的格式,json中的json.lua有两个函数是我们需要用的,第一个叫做 encode,用于将一个数据编码成json格式,第二个是 decode,用于将json解析成一个table格式
需要 require("json")
[plain] view plain copy
-- 构造json table
str={age=20,testArray={array={20,age=40,"test"}}}
-- 转换json串
strJson=json.encode(str)
print("----"..strJson)
-- 解析json串
jsonData=json.decode(strJson)
print("---"..jsonData.age)
print("---"..jsonData.testArray.array.age)
[plain] view plain copy
cocos2d: [LUA-print] ----{"testArray":{"array":{"1":20,"2":"test","age":40}},"age":20}
cocos2d: [LUA-print] ---20
cocos2d: [LUA-print] ---40
解析本地json文件
需要修改的json数据gui-config.json
[plain] view plain copy
{
"configs": [{
"server": "JP3.ISS.TF",
"server_port": 443,
"password": "58603228",
"method": "aes-256-cfb",
"remarks": ""
},
{
"server": "US1.ISS.TF",
"server_port": 443,
"password": "37382928",
"method": "aes-256-cfb",
"remarks": ""
},
{
"server": "HK2.ISS.TF",
"server_port": 8989,
"password": "59434206",
"method": "aes-256-cfb",
"remarks": ""
}],
"strategy": null,
"index": 0,
"global": false,
"enabled": true,
"shareOverLan": false,
"isDefault": false,
"localPort": 1080,
"pacUrl": null,
"useOnlinePac": false,
"availabilityStatistics": false
}
LUA解析代码:
[plain] view plain copy
function FileRead()
local file = io.open("gui-config.json", "r");
local json = file:read("*a");
file:close();
return json;
end
function FileWrite()
local file = io.open("gui-config.json", "w");
file:close();
end
local cjson = require("cjson");
local file = FileRead();
local json = cjson.decode(file);
for i, w in ipairs(json.configs) do
print("server: " .. w.password)
print("server_port: " .. w.server_port)
print("password: " .. w.password)
print("method: " .. w.method .. '\n')
end