我们如何让JavaScript认为字符串是JSON?

时间:2017-08-05 06:13:35

标签: javascript jquery json ajax angular

我有一个只有在传递JSON对象时才有效的函数。如果我将一个字符串传递给它,格式与JSON相同,则它不起作用。所以我想让该函数认为传递给它的字符串是一个JSON。该字符串确实是JSON格式。

我也尝试了以下内容。我通过Ajax输入了字符串,"句柄为"参数为" JSON",然后当我将结果传递给它起作用的函数时。

所以我推断问题不在于字符串。如何将此字符串转换为JSON?如果我通过ajax请求得到相同的字符串,然后将其传递给函数,则直接传递它不起作用。

控制台日志的屏幕截图: enter image description here

提前谢谢

2 个答案:

答案 0 :(得分:-1)

JavaScript是一种动态类型语言,因此您无法事先指定函数参数的类型。如果您需要,请查看TypeScript

JSON只是一个String,而不是JavaScript中的独立类型。要将JavaScript对象转换为等效的JSON字符串表示,请使用:

const myJSON = JSON.stringify ({ a: 'b' })

要从JSON字符串中获取JavaScript对象,请使用:

JSON.parse (myJSON)

当通过网络时,如果您将类型指定为JSON,则库可以自动返回序列化对象。您还没有粘贴任何代码,因此我猜测您尚未在网络请求中将application/json指定为Content-Type。由于您已标记了问题jQuery,请查看[$.getJSON][2],这应该是您想要的。

答案 1 :(得分:-2)

使用 JSON.parse

function isJson(str) {
    try {
        JSON.parse(str);
    } catch (e) {
        return false;
    }
    return true;
}

示例:



function isJson(str) {
    try {
        JSON.parse(str);
    } catch (e) {
        return false;
    }
    return true;
}

str = '{"a":1, "b":2}';
console.log(isJson(str)); // true

str1 = '{["a":1, "b":2]}';
console.log(isJson(str1)); // false