sách gpt4 ai đã đi

Làm thế nào để phát hiện một tệp JavaScript chỉ chứa dữ liệu JSON hay có ý định chứa dữ liệu JSON? javascript json javascript-file

In lại 作者:行者123 更新时间:2023-11-30 00:05:22 33 4
mua khóa gpt4 Nike

假设我们有一个名为 configuration.js 的文件,当我们查看内部时,我们会看到:

'use strict';
var profile = {
"project": "%ProjectsRoot%\\SampleProject\\Site\\Site.csproj",
"projectsRootKey": "%ProjectsRoot%",
"ftp": {
"address": "ftp://192.168.40.50/",
"username": "",
"password": ""
},
"delete": [
"\\b(bin)\\b.*\\.config",
"\\b(bin)\\b.*\\.js",
"\\b(bin)\\b.*\\.css",
"bin\\\\(?!ProjectName).*\\.(dll|pdb)"
],
"replace": [
{
"file": "Web.config",
"items": [
{
"regex": "()",
"newValue": "$1$3"
},
{
"regex": "",
"newValue": ""
}
]
}
]
};

在这种情况下,.js 文件的内容旨在仅为 JSON,但由于某些 IDE 原因,它被声明为 JavaScript 语句,以便 IDE 识别内容并正确格式化。此文件在另一种情况下可能包含:

{
"project": "%ProjectsRoot%\\SampleProject\\Site\\Site.csproj",
"projectsRootKey": "%ProjectsRoot%",
"ftp": {
"address": "ftp://192.168.40.50/",
"username": "",
"password": ""
},
"delete": [
"\\b(bin)\\b.*\\.config",
"\\b(bin)\\b.*\\.js",
"\\b(bin)\\b.*\\.css",
"bin\\\\(?!ProjectName).*\\.(dll|pdb)"
],
"replace": [
{
"file": "Web.config",
"items": [
{
"regex": "()",
"newValue": "$1$3"
},
{
"regex": "",
"newValue": ""
}
]
}
]
}

在这两种情况下,文件的扩展名最好是.json, thay vì.js。我们正在创建一个具有许多功能的质量工具,其中之一是建议开发人员根据内容更改文件的扩展名。

在这两种情况下,我们如何确保文件只包含 JSON,或者只包含 JSON?

注:此处以复杂的JSON为例,是为了提供一个真实的样本。

1 Câu trả lời

要涵盖第二种情况,您需要做的就是将文件提供给一些具有非常严格设置的 JSON 解析器;如果它拒绝该文件,那么它就不是 JSON 文件。

为了涵盖第一个,好吧,只要您只是试图验证那个非常具体的情况,一种可能性是使用一些正则表达式来删除末尾的分号和 'use strict '; var something = 开始,然后将生成的清理文本传递给 JSON 解析器以查看它是否是有效的 JSON。

如果你需要处理更复杂的情况,你可以使用一些 JavaScript 解析器从文件中生成一个 AST,然后遍历树来验证它(比如,如果它包含一个变量,没有函数,没有语句, ETC)。当然,这会稍微复杂一些,但功能非常强大。

var STRICT_JSON_EXAMPLE = '{"value": "ok"}';
var JSON_LIKE_EXAMPLE = '\'use strict\';\nvar somevar = {"value": "ok"};';
var NON_JSON_EXAMPLE = 'alert("!!!");';

var EXAMPLES = [ STRICT_JSON_EXAMPLE, JSON_LIKE_EXAMPLE, NON_JSON_EXAMPLE ];

function isStrictJSON(text) {
thử {
JSON.parse(text);
trả về giá trị đúng;
} bắt (e) {
trả về false;
}
}

function isJSONLike(text) {
var regex = /^\s*(['"]use strict['"]\s*;?)?\s*var\s+\w+\s*=\s*(.*?);?$/;
var cleanedText = text.replace(regex, '$2');
return isStrictJSON(cleanedText);
}

alert('Strict JSON: ' + EXAMPLES.map(isStrictJSON).join(', ') +
'\nJSON-like: ' + EXAMPLES.map(isJSONLike).join(', '));

关于javascript - 如何检测一个 JavaScript 文件只包含 JSON 数据,还是打算包含 JSON 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38743386/

33 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com