首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用完整的错误报告来验证JSON数据--使用j甜::是我的-json-有效的糖果?

如何用完整的错误报告来验证JSON数据--使用j甜::是我的-json-有效的糖果?
EN

Stack Overflow用户
提问于 2016-07-03 21:54:52
回答 1查看 104关注 0票数 0

我正在编写Javascript项目,并使用JSweet框架编写Javascript部分。作为其功能的一部分,我的应用程序将异步加载一些JSON数据(存储为单独的文件)。我想使用JSON模式验证器验证该数据。JSweet提供了几个这样的验证器,其中之一是“is -my-json有效”端口( https://github.com/mafintosh/is-my-json-valid中的原始Javascript库,http://public.jsweet.org/apidocs/releases/org/jsweet/candies/is-my-json-valid中的JSweet端口)。

我已经能够使用is-my- JSON有效库为我提供一个真实/错误的指示,说明给定的JSON块是否符合给定的JSON模式。但是,在验证失败的情况下,我还想检索有关失败原因的错误详细信息(例如,“必需的属性blah”)。

我将如何使用JSweet中的is- my - JSON有效库,这样我得到的不仅仅是真实/错误的指示--也就是说,我还得到了一份完整的报告,告诉我JSON数据有什么问题?

这是我的JSweet测试程序。被转写的Javascript已经正确抛出了异常--唯一让我感到高兴的是一个详细的错误报告:

代码语言:javascript
复制
package json_valid.test_01;

import static def.is_my_json_valid.Globals.is_my_json_valid;

import jsweet.lang.Error;
import jsweet.lang.JSON;

public class Test_01
{
    public static void main (String[] args)
    {
        String              sSchema;
        String              sTestFail;
        String              sTestPass;

        sSchema     =
            "{\n"
            + "  \"required\": true,\n"
            + "  \"type\": \"object\",\n"
            + "  \"properties\": {\n"
            + "    \"hello\": {\n"
            + "      \"required\": true,\n"
            + "      \"type\": \"string\"\n"
            + "    }\n"
            + "  }\n"
            + "}\n";
        sTestFail       = "{\"a\": \"b\"}";
        sTestPass       = "{\"hello\": \"world\"}";
        _AssertConforms (sTestPass, sSchema);   /* Ok - expect nothing printed to console  */
        _AssertConforms (sTestFail, sSchema);   /* AiaOw - expect error message on console */
    }

    private static void _AssertConforms (String jsonData, String jsonSchema)
    {
        Object              oSchema;
        Object              oTested;
        boolean             result;
        String              specifics;
        String              message;

        oTested = JSON.parse (jsonData);
        oSchema = JSON.parse (jsonSchema);
        result = is_my_json_valid (oSchema).apply (oTested);
        if (! result)
        {
            specifics = "Sorry, still waiting for that nifty code to extract error specifics from is-my-json-valid.";
            message   = "Validation failed. Error specifics: " + specifics;
            throw new Error (message);
        }
    }
}

我的HTML测试页面相当无聊:

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
<meta charset="US-ASCII">
<title>JSON validator test</title>
<script src="../../../target/dist/bundle-test_01.js"></script>
</head>
<body>

</body>
</html>

但是,当我将页面加载到Chrome web浏览器时,web控制台提供了一个异常,如预期的那样:

代码语言:javascript
复制
bundle-test_01.js:1535 Uncaught Error: Validation failed. Error specifics: Sorry, still waiting for that nifty code to extract error specifics from is-my-json-valid.
    Test_01._AssertConforms @ bundle-test_01.js:1535
    Test_01.main @ bundle-test_01.js:1521
    12.is-my-json-valid @ bundle-test_01.js:1541
    s @ bundle-test_01.js:1
    e @ bundle-test_01.js:1
    (anonymous function) @ bundle-test_01.js:1

我所缺少的只是异常消息中的错误细节。

非常感谢你的关心!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-06 04:41:37

看起来,当前版本的JSweet还没有与is有效组件协同工作。来自JSweet作者:

好的。我有个坏消息。 我仔细研究了一下是我的json有效的,它似乎只是作为一个节点模块提供的。这不是一个问题,理论上,您只需要使用“模块”选项进行编译。然而,JSweet似乎还不支持定义模块的方式。看起来JSweet无法正确地要求模块,因为它是在这里指定的:https://github.com/mafintosh/is-my-json-valid。 通常,在使用模块之前,最好知道它是否可以从浏览器中使用,因为节点模块在JSweet中仍然只有部分支持。 好消息是-我的json-有效似乎是我正在寻找的完善的用例,以改进j甜的需求,正如在第129中已经讨论过的那样。所以我会尽快处理的。

请参阅https://github.com/cincheo/jsweet/issues/144

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38174672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档