如何在单独的行上写json

时间:2017-12-15 03:29:43

标签: javascript json

我是JSON和这个论坛的新手,希望有人可以提供帮助。

在HTML文件中,我有以下javascript:

<script type="text/javascript" src="ExternalData.json"></script>

var mydata = JSON.parse(data);
alert(mydata.length);

var div = document.getElementById('data');

alert(mydata[0].name);
alert(mydata[1].name);
alert(mydata[0].age);
alert(mydata[1].age);

在另一个ExternalData.json文件中,我有:

data = '[{"name" : "Bob", "age" : "2"},{"name" : "Mary", "age" : "4"}]';

一切正常,但是当我尝试将返回标记添加到JSON文件时,如下所示:

data = '[
    {"name" : "Bob", "age" : "2"},
    {"name" : "Mary", "age" : "4"}]';

它不再适合我。

我错过了什么?基本的东西,但我不知道!

这最终将是一个由不熟悉编码的同事更新的大量数据。将所有信息放在一行上是行不通的。

2 个答案:

答案 0 :(得分:2)

您的问题是浏览器无法理解如何处理字符串中的换行符,并且可能会抛出错误(请检查F12)。对我来说(Chrome),它无法编译字符串,只看到第一行作为字符串的内容。

您需要转义换行文字。在javascript中的每个换行符上添加一个向后斜杠。这将在编译后将字符串合并为一行,或者在某些浏览器中,一旦编译将保留换行符。

var data = '[\
    {"name" : "Bob", "age" : "2"},\
    {"name" : "Mary", "age" : "4"}]';

您可以在此处详细了解:JavaScript string with new line - but not using \n

答案 1 :(得分:0)

pepperjack的答案会起作用,但它会使你的json文件更难以维护。最好在没有<script language="JavaScript"> function test() { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { parseResponse(this.responseText); } }; xmlhttp.open("GET", "demo.txt", true); xmlhttp.send(); } function parseResponse(data) { var mydata = JSON.parse(data); alert(mydata.length); alert(mydata[0].name); alert(mydata[1].name); alert(mydata[0].age); alert(mydata[1].age); } </script> 的情况下创建外部JSON文件,并使用XMLHTTP获取它:

[
    {"name" : "Bob", "age" : "2"},
    {"name" : "Mary", "age" : "4"}
]

demo.txt只包含:

{{1}}