是否可以检查变量中的数据是字符串还是JSON对象?
var json_string = '{ "key": 1, "key2": "2" }';
var json_string = { "key": 1, "key2": "2" };
var json_string = "{ 'key': 1, 'key2', 2 }";
当json_string.key2返回2或未定义时。
何时需要使用JSON.parse?
我如何检查哪一个是字符串或JSON对象。
答案 0 :(得分:2)
试试这个:
if(typeof json_string == "string"){
json = JSON.parse(json_string);
}
答案 1 :(得分:2)
因为您的第3个json_string无效,您还必须检查错误:
function checkJSON(json) {
if (typeof json == 'object')
return 'object';
try {
return (typeof JSON.parse(json));
}
catch(e) {
return 'string';
}
}
var json_string = '{ "key": 1, "key2": "2" }';
console.log(checkJSON(json_string)); //object
json_string = { "key": 1, "key2": "2" };
console.log(checkJSON(json_string)); //object
json_string = "{ 'key': 1, 'key2', 2 }";
console.log(checkJSON(json_string)); //string
答案 2 :(得分:0)
实际上并不是'JSON对象'。一旦JSON字符串被成功解码,它就会变成一个对象,一个数组或一个原语(字符串,数字等)。
但是,您可能想知道字符串是否是有效的JSON字符串:
var string1 = '{ "key": 1, "key2": "2" }';
var string2 = 'Hello World!';
var object = { "key": 1, "key2": "2" };
var number = 123;
function test(data) {
switch(typeof data) {
case 'string':
try {
JSON.parse(data);
} catch (e) {
return "This is a string";
}
return "This is a JSON string";
case 'object':
return "This is an object";
default:
return "This is something else";
}
}
console.log(test(string1));
console.log(test(string2));
console.log(test(object));
console.log(test(number));
答案 3 :(得分:0)
要检查变量类型,可以使用typeof运算符
要转换有效的字符串化json对象,可以使用以下函数
如果变量是对象,则它不会执行任何操作并返回相同的对象。
但如果它是一个字符串,那么它会尝试将其转换为object并返回。
function getJSON(d) {
var jsonObject;
jsonObject = d;
if (typeof d === 'string') {
try {
jsonObject = JSON.parse(d);
} catch (Ex) {
jsonObject = undefined;
console.log("d " ,d, 'Error in parsing', Ex);
}
}
return jsonObject;
};
var obj = {a:2, b:3};
var stringified_obj = JSON.stringify(obj);
console.log(obj);
console.log(getJSON(stringified_obj));