Javascript 如何在MarkLogic中检查传递的对象是否是有效的JSON?

Javascript 如何在MarkLogic中检查传递的对象是否是有效的JSON?,javascript,json,validation,marklogic,Javascript,Json,Validation,Marklogic,在Marklogic的查询控制台中,我需要编写一个JavaScript函数,在该函数中,我可以验证对象是否为具有真/假输出的有效JSON。如何在不使用字符串的情况下直接检查它 我曾尝试将输入转换为字符串,然后执行JSON.parse,但整个代码都不对 function isValidJson(json) { //var obj = JSON.stringify(json); try

在Marklogic的查询控制台中,我需要编写一个JavaScript函数,在该函数中,我可以验证对象是否为具有真/假输出的有效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“object”已经被解析,不能无效。当它仍然是字符串时,必须检查有效性。比如:

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);

我不确定我是否完全理解您的意图,但JSON“object”已被解析,不能无效。当它仍然是字符串时,必须检查有效性。比如:

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);

JSON是一个字符串,JSON对象只是一个JavaScript对象,语义结束。当无法创建无效对象时,如何传递无效对象?(@George)@Andreas你看过我的评论了吗?“JSON是一个字符串,JSON对象只是一个JavaScript对象”这应该有帮助:@Mehul但这也不是有效的JavaScript…JSON是一个字符串,JSON对象只是一个JavaScript对象,语义结束。当无法创建无效对象时,如何传递无效对象?(@George)@Andreas你看过我的评论了吗?“JSON是一个字符串,JSON对象只是一个JavaScript对象”这应该有帮助:@Mehul,但这也不是有效的JavaScript。。。