将输入字段中的字符串转换为JavaScript中的数组

30 浏览
0 Comments

将输入字段中的字符串转换为JavaScript中的数组

我有一个简单的AJAX调用,服务器将返回一个包含有用数据的JSON字符串,或者是由PHP函数mysql_error()生成的错误消息字符串。我该如何测试这个数据是一个JSON字符串还是错误消息呢?

如果我能使用一个名为isJSON的函数就好了,就像你可以使用instanceof函数来测试某个东西是否为数组一样。

这是我想要的:

if (isJSON(data)){
    //做一些数据处理
}else{
    //报告错误
    alert(data);
}

0
0 Comments

问题的出现原因是使用JSON.parse()方法存在一些缺点,如对于传入数字、布尔值或null等非字符串类型的参数,JSON.parse()会返回true,而不是false。

为了解决这个问题,作者重写了代码。新的代码首先判断参数item的类型,如果不是字符串,则将其转换为字符串类型。然后尝试使用JSON.parse()方法将参数转换为JSON对象,如果出现异常则返回false。最后,判断转换后的value是否为一个非null的对象,如果是则返回true,否则返回false。

作者进行了一系列的测试,验证了新代码的正确性。测试中包括了一个有效的JSON对象validJson和一个无效的JSON对象notValidJson。通过调用testIsJson()函数,分别对这些对象进行了测试,并将预期结果与实际结果进行对比。

最后,作者还给出了一个简化if语句的建议,将其转换为一个简单的return语句。

,问题的原因是JSON.parse()方法对于非字符串类型的参数返回了意外的结果,为了解决这个问题,作者重写了代码,添加了对参数类型的判断和额外的验证步骤。新代码通过测试验证了其正确性,并给出了进一步的优化建议。

0
0 Comments

在JavaScript中,将输入字段中的字符串转换为数组的问题出现的原因是,JSON规范中指出JSON是建立在两种结构上的:名称/值对的集合(对象)或值的有序列表(数组)。因此,当我们想要将字符串解析为JSON格式时,我们需要检查字符串是否具有正确的JSON交换格式。

为了解决这个问题,可以使用以下两个函数:

hasJsonStructure()

函数用于检查数据/文本是否具有正确的JSON交换格式。它的实现如下:

function hasJsonStructure(str) {
    if (typeof str !== 'string') return false;
    try {
        const result = JSON.parse(str);
        const type = Object.prototype.toString.call(result);
        return type === '[object Object]' 
            || type === '[object Array]';
    } catch (err) {
        return false;
    }
}

使用示例:

hasJsonStructure('true')             // —» false
hasJsonStructure('{"x":true}')       // —» true
hasJsonStructure('[1, false, null]') // —» true

safeJsonParse()

函数用于在将数据解析为JavaScript值时要小心处理。它的实现如下:

function safeJsonParse(str) {
    try {
        return [null, JSON.parse(str)];
    } catch (err) {
        return [err];
    }
}

使用示例:

const [err, result] = safeJsonParse('[Invalid JSON}');
if (err) {
    console.log('Failed to parse JSON: ' + err.message);
} else {
    console.log(result);
}

通过使用这两个函数,我们可以有效地将输入字段中的字符串转换为数组,并且可以确保数据具有正确的JSON交换格式。这样,我们可以避免手动进行字符串分析和正则表达式操作,提高性能并减少错误。

0
0 Comments

将一个输入字段内的字符串转换为JavaScript中的数组的问题出现的原因是需要将字符串转换为数组。解决方法是使用JSON.parse函数来实现。

在JavaScript中,可以使用JSON.parse函数将字符串转换为JSON对象。为了判断一个字符串是否可以被解析为JSON对象,可以使用isJson函数。该函数尝试使用JSON.parse函数解析字符串,如果解析成功则返回true,否则返回false。

然而,需要注意的是,如果将非字符串类型的参数传递给JSON.parse函数,例如数字、布尔值或null,它们都会被解析为有效的JSON值,并且不会抛出异常。因此,不能仅仅依靠异常处理来判断一个字符串是否可以被解析为JSON对象。

为了解决这个问题,可以使用typeof运算符来判断字符串的类型,如果类型为字符串,则可以调用JSON.parse函数进行解析,否则返回false。

另外,需要注意的是,使用JSON.parse函数会进行大量的计算来解析字符串,并且返回解析后的JSON对象。因此,如果需要使用解析后的JSON对象,可以将其作为函数的返回值返回,而不是丢弃它。在异常处理的代码块中,可以返回解析前的字符串,并设置一个标志来表示解析是否成功。

此外,建议将函数名改为tryParse,并使用ESLint来检测代码中的错误。

,可以通过使用JSON.parse函数将字符串转换为数组,但需要注意异常处理不能用于预期的行为,而应该使用其他方法来判断字符串是否可以被解析为JSON对象。

0