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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何检查传递的对象是否是MarkLogic中的有效JSON?相关的知识,希望对你有一定的参考价值。

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

以上是关于如何检查传递的对象是否是MarkLogic中的有效JSON?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查数组是否包含JavaScript中的对象?

带参数的marklogic调用函数

在 Marklogic 数据库中存储名称/值对的最有效方法是啥

如何检查日期是否已通过Python传递(简单)

如何从 C# WebApi 禁用对 MarkLogic 服务器的预检请求

检查模型在控制器之外是不是有效