如何在javascript中验证json数据

时间:2015-03-04 09:34:05

标签: javascript json

读取文件并将内容存储在一个变量中,即var json

假设变量包含这样的

var json = {
    "abc":"abc",
    "xyz":"xyz"
}

上面的变量包含有效的json。

如果Json文件中发生错误,是否有办法找出错误的位置,例如:行号和列号?

如果它无效

var json1 = {
"abc":"abc",
"xyz":xyz"
}

错误应该显示为

Parse error on line 3:
...: "abc",    "xyz": xyz"}
----------------------^

1 个答案:

答案 0 :(得分:0)

您的问题中没有任何JSON,但如果我们假设您这样做:

var json = '{ "abc":"abc", "xyz":"xyz" }';

所有现代浏览器都支持JSON.parse,如果JSON无效,则会抛出异常,因此:

try {
    var obj = JSON.parse(json);
}
catch (e) {
    // The JSON was invalid, `e` has some further information
}

但是那些不会给你排队和专栏的人。为此,您可能需要一个解析脚本。在浏览器内置JSON.parse之前,有Crockford's json2.jsvarious others listed at the bottom of the JSON.org page等脚本可以为您提供行和字符信息(或者可以修改为)。

JSON.parse示例:



var valid = '{ "abc":"abc", "xyz":"xyz" }';
test("valid", valid);

var invalid = '{ "abc", "xyz":xyz }';
test("invalid", invalid);

function test(label, json) {
  try {
    JSON.parse(json);
    snippet.log(label + ": JSON is okay");
  }
  catch (e) {
    snippet.log(label + ": JSON is malformed: " + e.message);
  }
}

<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
&#13;
&#13;
&#13;