请教:aardio有没有严格验证json的方法

mndsoft 3天前 136

aardio自身带的json库好像是宽松型,无法对json严格验证,有没有对json严格验证的方法,比如下面这些 缺少"[",也能解析。

正则表达式好像也不行,有没有外部简洁的库,node.js是不是杀鸡用牛刀了,:-)

比如 缺少 "["

    {
        "IObinary": "000000000001",
        "delayMS": 1000,
        "Remark": "开启第个灯"
    }
]
比如 缺少 "]"
[
    {
        "IObinary": "000000000001",
        "delayMS": 1000,
        "Remark": "开启第个灯"
    }

比如缺少  ","
[
    {
        "IObinary": "000000000001",
        "delayMS": 1000,
        "Remark": "开启第个灯"
    }
    {
        "IObinary": "000000000001",
        "delayMS": 1000,
        "Remark": "开启第个灯"
    }
]


最新回复 (1)
  • mndsoft 1天前
    0 2

    拼凑了简单的验证,只能大致检查下json完整性。欢迎高手有更好的。

    CheckJsonTo = function(filename = "IOdata.json"){
        // 读取文件内容
        var jsonText = string.load(filename);
        if(!jsonText || #jsonText == 0){
            winform.msgbox("文件为空!");
            return false;
        }
        
        // 基本格式验证
        var trimmedText = string.trim(jsonText);
        if(trimmedText[1] != 91){ // 91是'['的ASCII码
            winform.msgbox("JSON格式错误!缺少开头的'['符号");
            return false;
        }
        
        if(trimmedText[#trimmedText] != 93){ // 93是']'的ASCII码
            winform.msgbox("JSON格式错误!缺少结尾的']'符号");
            return false;
        }
        
        
        // 解析JSON
        var jsonData;
        try {
            jsonData = json.parse(jsonText);
        }
        catch(e) {
            winform.msgbox("JSON解析失败: " + e);
            return false;
        }
        
        // 验证数据结构
        if(type(jsonData) != type.table || !#jsonData) {
            winform.msgbox("数据格式错误:应为非空JSON数组");
            return false;
        }
    }


返回