【问题标题】:What is the correct format for json file Javascript?json文件Javascript的正确格式是什么?
【发布时间】:2017-10-16 22:16:56
【问题描述】:

我正在尝试测试从 JSON 文件中提取数据并显示警报的简单代码。我对 JSON 文件的格式感到困惑。 以下代码可以正常工作: Working code 代码:

<!DOCTYPE html>
<html>
<body>
<h2>My First Web Pags</h2>
<p>My first paragraph.</p>
<script> 
var text = '{ "name":"John", "birth":"1986-12-14", "city":"New York"}';
var jsonScript = JSON.parse(text);
var titledata = jsonScript.name; 
alert(titledata);
</script>
</body>
</html> 

另一方面,当我更改 JSON 的格式时,不会生成警报。 Faulty Code 代码:

<!DOCTYPE html>
<html>
<body>
<h2>My First Web Pags</h2>
<p>My first paragraph.</p>
<script> 
var text = '{ "name":"John", "birth":"1986-12-14", "city":"New York"
}';
var jsonScript = JSON.parse(text);
var titledata = jsonScript.name; 
alert(titledata);
</script>
</body>
</html> 

我正在尝试编写一个 php 脚本,该脚本使用股票代码(例如,Apple 的 AAPL 和 Microsoft 的 MSFT)来请求包含有关搜索公司的股票新闻的 XML 文件。所有股票新闻均来自 Seeking Alpha Stock News RSS 提要。响应是一个 XML 格式的对象。 php 脚本应该解析返回的 XML 格式的对象,提取必要的字段并构建一个 JSON 对象以发送到客户端。 我为此使用以下 php 代码:

$note = "https://seekingalpha.com/api/sa/combined/".$symbol.".xml";
$xml=simplexml_load_file($note) or die("Error: Cannot create object");
$jsonNews = json_encode($xml);

返回的 json 数据格式好像有问题。 我创建了一个与 php 脚本返回的 json 格式相同的示例 json 数据。如果格式不正确,如何更正格式?

【问题讨论】:

  • 请勿发布代码图片;它不可搜索,我们无法将其复制/粘贴到答案中。
  • 我没有看到 JSON 文件。
  • "如果格式不正确,如何更正格式?" JSON的格式没问题。问题是字符串文字不能在 JavaScript 中产生多行。
  • "返回的 json 数据格式好像有问题。" 前面已经提到过,JSON 的格式没问题。但是你不能简单地将它放在 JavaScript 字符串文字中,因为字符串文字不能产生多行。几乎没有理由将 JSON 放在字符串文字中。

标签: javascript html json


【解决方案1】:

您不需要从字符串定义 JSON 对象,这会导致您从字符串 var 中错误地键入最后一个 '}' 符号。你应该在那里写:+'}';

尽管如此,JSON 是 Javascript 对象表示法,因此您可以将其用作对象定义:

var jsonScript = {
    name: "Jhon",
    birth: "1986-12-14",
    city: "New York"
}

【讨论】:

  • 如何更正 php 脚本返回的 json 数据格式?
  • @user45437:如果您从 PHP 生成 JavaScript 代码,那么您应该将 JSON 放入字符串文字中。也许这有帮助:How to pass variables and data from PHP to JavaScript?(尤其是接受答案中的方法 3)。
【解决方案2】:

不是json的格式:

"aaa
bbb" 

不是一个有效的字符串(参见代码的颜色(编辑:我的意思是在图像中))

你可以这样做

"aaa"+
"bbb"

(与“aaabbb”相同) 或

"aaa\nbbb" 

如果您希望在字符串中包含换行符

编辑:所以在你的情况下:

'{"name": "John","birth": "1986-12-14","city": "new York"
}'  - not a valid json string because not a valid string



'{"name": "John","birth": "1986-12-14","city": "new York"'+
'}'  - a valid json string



'{"name": "John","birth": "1986-12-14","city": "new York"\n}'  - a valid json string with a newline

【讨论】:

  • 您的第一个建议也不是有效的 JSON。你是说 JavaScript 吗?
  • 是的,我的建议都不是。那里只显示什么是有效字符串,什么不是有效字符串
  • 我认为这与字符串无关。当我将括号移到下一行时,代码停止工作。我会用结果更新我的问题。
  • 但是上下文很重要。 "aaa"+"bbb" 在 JavaScript 文件中有效,但在 JSON 文件中无效。
猜你喜欢
  • 2014-01-20
  • 1970-01-01
  • 2015-11-14
  • 2020-11-02
  • 2020-11-22
  • 2020-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多