cocos2dx lua解析json



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  

猜你喜欢

转载自blog.csdn.net/u014206831/article/details/80486781