uni-app中JSON.parse结果报错

发布于 1周前 作者 htzhanglong 来自 uni-app

uni-app中JSON.parse结果报错
let collectRange : number = (appStoreGetKey(“collectRange”) as string).length
let collect : string = collectRange > 3 ? appStoreGetKey(“collectRange”) : “[]”
console.log(collect)
let geomobj = JSON.parse(collect)
console.log(geomobj)

图片


1 回复

在uni-app开发中,如果遇到JSON.parse结果报错的情况,这通常意味着你尝试解析的字符串不是一个有效的JSON格式。处理这类错误时,首先确保传入的字符串确实是有效的JSON。以下是一些常见的错误场景和相应的代码案例,帮助你诊断和解决问题。

1. 检查字符串是否为有效的JSON

确保你的字符串符合JSON格式规范,例如属性名必须用双引号包围,字符串值也必须用双引号包围。

try {
    let jsonStr = '{"name": "John", "age": 30}'; // 有效的JSON字符串
    let obj = JSON.parse(jsonStr);
    console.log(obj); // 输出: {name: "John", age: 30}
} catch (error) {
    console.error('Error parsing JSON:', error);
}

2. 捕获解析错误并处理

使用try...catch结构来捕获JSON.parse可能抛出的异常,这有助于调试和避免程序因错误而中断。

let invalidJsonStr = '{name: "John", age: 30}'; // 无效的JSON字符串,缺少引号

try {
    let obj = JSON.parse(invalidJsonStr);
} catch (error) {
    console.error('Invalid JSON string:', invalidJsonStr);
    console.error('Error details:', error);
}

3. 验证JSON字符串前进行预处理

在尝试解析之前,你可以对字符串进行一些预处理,比如去除不必要的空格或者检查是否包含非法字符。

let maybeInvalidJsonStr = '  { "name": "John", "age": 30, "city": "New York" }  '; // 前后有空格的JSON字符串

// 去除字符串两端的空白字符
let trimmedStr = maybeInvalidJsonStr.trim();

try {
    let obj = JSON.parse(trimmedStr);
    console.log(obj); // 输出: {name: "John", age: 30, city: "New York"}
} catch (error) {
    console.error('Error parsing trimmed JSON:', error);
}

4. 使用第三方库进行更严格的验证

对于更复杂的JSON验证需求,可以考虑使用第三方库,如jsonlint,它可以在客户端进行更严格的JSON格式验证。

// 注意:在uni-app中直接使用jsonlint可能需要相应的npm包或者通过其他方式引入
// 假设已经正确引入了jsonlint库
import jsonlint from 'jsonlint';

let jsonStr = '{"name": "John", "age": 30}';

try {
    jsonlint.parse(jsonStr);
    console.log('Valid JSON');
} catch (error) {
    console.error('Invalid JSON:', error);
}

通过上述方法,你可以更有效地诊断和解决JSON.parse在uni-app中的报错问题。

回到顶部