Files
dns-server/dns/debug-json.js
Alex Yang cdac4fcf43 update
2026-01-16 11:09:11 +08:00

71 lines
2.5 KiB
JavaScript

// 调试JSON解析问题
const fs = require('fs');
const path = require('path');
const filePath = path.join(__dirname, 'domain-info', 'domains', 'domain-info.json');
console.log(`正在调试JSON文件: ${filePath}`);
console.log('=' .repeat(50));
// 1. 检查文件大小和内容
const stats = fs.statSync(filePath);
console.log(`文件大小: ${stats.size} 字节`);
const data = fs.readFileSync(filePath, 'utf8');
console.log(`文件内容长度: ${data.length} 字符`);
console.log('=' .repeat(50));
// 2. 查找网易公司的位置和结束位置
const neteaseStart = data.indexOf('"网易"');
console.log(`网易公司开始位置: ${neteaseStart}`);
// 尝试找到网易公司的结束位置
let neteaseEnd = neteaseStart + 1000;
const neteaseEndStr = '},\n\t\t"';
neteaseEnd = data.indexOf(neteaseEndStr, neteaseStart);
console.log(`网易公司结束位置: ${neteaseEnd}`);
// 3. 查看网易公司结束后的内容
if (neteaseEnd !== -1) {
const nextCompany = data.substring(neteaseEnd, neteaseEnd + 50);
console.log(`网易公司结束后的内容: ${nextCompany}`);
}
console.log('=' .repeat(50));
// 4. 解析JSON并查看结果
try {
const parsedData = JSON.parse(data);
console.log('JSON解析成功!');
if ('domains' in parsedData) {
const companies = Object.keys(parsedData.domains);
console.log(`解析出的公司数量: ${companies.length}`);
console.log(`解析出的公司: ${companies.join(', ')}`);
// 查看网易公司的完整数据
if (companies.includes('网易')) {
console.log('\n网易公司的数据结构:');
console.log(JSON.stringify(parsedData.domains['网易'], null, 2));
}
}
} catch (error) {
console.error('JSON解析错误:', error);
// 显示错误位置附近的内容
if (error instanceof SyntaxError && error.offset) {
const errorPos = error.offset;
const context = data.substring(Math.max(0, errorPos - 50), errorPos + 50);
console.log(`错误位置附近的内容: ${context}`);
}
}
console.log('=' .repeat(50));
// 5. 搜索其他公司
const companiesToCheck = ['搜狗', '高德地图', '奇虎360', '百度'];
for (const company of companiesToCheck) {
const position = data.indexOf(`"${company}"`);
console.log(`${company}在文件中的位置: ${position}`);
if (position !== -1) {
const context = data.substring(Math.max(0, position - 10), position + 20);
console.log(` 上下文: ${context}`);
}
}