在Marklogic的查询控制台中,我需要编写一个JavaScript函数,我可以将该对象验证为具有true / false输出的有效JSON。如何在不使用字符串的情况下直接检查?
我试图获取输入并转换为字符串,然后执行JSON.parse但整个代码不正确。
function isValidJson(json)
{
//var obj = JSON.stringify(json);
try
{
var x = JSON.parse(xdmp.toJSON(json));
return x; //returns the JSON object if true
}
catch(e)
{
fn.error(xs.QName("ERROR"), "Not a valid JSON")
}
}
var json = {"test":"data"};
//var json = {"abc"};
isValidJson(json);
我想将值作为JSON对象而不是JSON字符串传递。传递时,函数应该返回它是否是有效的JSON。
我可以完成积极的测试用例但不是否定的。相反,我得到编译错误。
不确定我完全得到你所追求的,但是JSON'对象'已经被解析,并且不能无效。当它仍然是一个字符串时你必须检查有效性。就像是:
function isValidJson(json) {
try {
return JSON.parse(json); //returns the JSON object if true
} catch(e) {
fn.error(xs.QName("ERROR"), "Not a valid JSON")
}
}
//var json = '{"test":"data"}';
var json = '{"abc"}';
isValidJson(json);
HTH!