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

时间:2019-04-25 09:24:57

标签: javascript json validation marklogic

在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。

我可以完成肯定的测试用例,但不能否定的。相反,我得到了编译错误。

1 个答案:

答案 0 :(得分:0)

不确定我能完全理解您要做什么,但是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);

HTH!