jQuery - 检查.json文件是否有效

时间:2015-07-09 19:42:20

标签: javascript jquery json

我正在使用.json文件和jQuery $.getJSON来填充div文本,我的代码如下:

代码:

  $.getJSON("/js/content.json", function (data) {
  $(".lander .title").text(data.lTitle);
  $(".lander .subtitle").text(data.lSubtitle);
  $(".lander .text").html(data.lText).split('\n').join('<br/>');
});

JSON文件:

{
    "comment": "Landing page",
    "lTitle": "Your webpage",
    "lSubtitle": "Your webpage subtitle",
    "lText": "Edit this text under >js/content.json< ",

    "lDetailsTitle": "Here goes the details title under the landing header.",
    "lDetailsText": "Here goes the details text."

}

我要做的是使用$parseJSON检查整个content.json是否有效(不只是一个字符串)。我想这样做的原因是,jquery可以在DOM中显示错误消息,以便用户知道为什么div中没有文本。

我试过这个,但它不起作用:

var isValid = jQuery.parseJSON("/js/content.json");
if (isValid === true) {} else {
    $("#overlayMessage").css("display", "block");
    $("#overlayMessage .title").text("Oh no, we can't display this page!");
    $("#overlayMessage .text").text("An error occured with the file under: 'js/content.json'. Reason: Invalid.");
}

是否可以这样做,或者你只能检查一个字符串是否有效?

3 个答案:

答案 0 :(得分:2)

你可能想要这样的东西:

try{
    var json = JSON.parse("invalid json");
}catch(err){
    console.log('json is invalid');
}

在浏览器中运行此命令的输出是“json无效

答案 1 :(得分:1)

提供fail()回调以捕获来自getJSON()

的解析错误
$.getJSON('/foo/bar.json')
  .done(function(d) {
    alert("success");
  })
  .fail(function(d) {
    alert("error");
  });

相关:Why does $.getJSON silently fail?

答案 2 :(得分:0)

jQuery.parseJSON()解析JSON字符串,但您提供了一个URI。您可以使用jQuery.get()将JSON作为文本提取,然后使用jQuery.parseJSON()检查它是否有效。

$.get( "/js/content.json", function( data ) {
    try  {
        var jsonObj = jQuery.parseJSON( data );
    } catch(err) {
        $("#overlayMessage").css("display", "block");
        $("#overlayMessage .title").text("Oh no, we can't display this page!");
        $("#overlayMessage .text").text("An error occured with the file under: 'js/content.json'. Reason: Invalid.");
    }
});