加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

区分XBRL,XML,CSV和JSON

发布时间:2020-12-16 22:46:58 所属栏目:百科 来源:网络整理
导读:目前我正在尝试区分不同的序列化文本格式.主要介于XBRL,XML,CSV和 JSON之间. 我想假设,按步骤检查,如果我们使用解析器来解析XBRL / XML并返回而没有抛出任何异常,那么它是一个有效的XML文档,需要进一步检查文档是否是常规xml或XBRL. 如果第一次检查失败,请尝
目前我正在尝试区分不同的序列化文本格式.主要介于XBRL,XML,CSV和 JSON之间.

我想假设,按步骤检查,如果我们使用解析器来解析XBRL / XML并返回而没有抛出任何异常,那么它是一个有效的XML文档,需要进一步检查文档是否是常规xml或XBRL.

如果第一次检查失败,请尝试解析csv.如果解析csv会返回异常,请尝试解析为JSON.如果以上都不起作用,则它是无效的文档.

这是识别文档格式的特殊方式吗?或者,还有更好的方法? (即阅读文档的前几个字节等…).

谢谢

解决方法

如果您知道JSON将是一个对象或数组,并且该内容必须是这四个中的一个……

if(content.charAt(0) == "[" || content.charAt(0) == "{") { 
    // JSON
} else if(content.charAt(0) == "<") {
    if(content.indexOf("xmlns="http://www.xbrl.org/2001/instance"") >= 0) {
        // XBRL
    } else {
        // XML
    }
} else {
    // CSV ?...
    // first remove strings
    var testCSV = content.replace("""",""); // remove escaped quotes
    testCSV = testCSV.replace(/".*?"/g,""); // match-remove quoted strings
    var lines = testCSV.split("n");
    if(lines.length === 1 && lines[0].split(",").length > 1) {
        // only 1 row so we can only verify if there is two or more columns
        // CSV
    } else if(lines.length > 1 && lines[0].split(",").length > 1 && lines[0].split(",").length === lines[1].split(",").length) {
        // we know there's multiple lines with the same number of columns
        // CSV
    }
    // can't be sure what it is
    // ???
}

以上将给你一个合理的确定性.

编辑我也添加了一个快速的CSV测试.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读