这是一个正确的 JSON 字符串吗?
Posted
技术标签:
【中文标题】这是一个正确的 JSON 字符串吗?【英文标题】:Is this a correct JSON string? 【发布时间】:2015-01-11 05:19:37 【问题描述】:我不太清楚如何制作 JSON 字符串。我得到了错误,我想知道如何纠正它。
这是我的 JSON 字符串:
var drivers = "driver" : [
"id" : 1,
"name" : "Bob",
"age" : "34"
"car" : [
"make" : "BMW",
"model" : "3.20",
"colour" : "Silver"
]
,
"id" : 2,
"name" : "Rob",
"age" : "22"
"car" : [
"make" : "Peugeot",
"model" : "306",
"colour" : "Blue"
]
,
"id" : 3,
"name" : "Maria",
"age" : "23",
"car" : [
"make" : "Mazda",
"model" : "3",
"colour" : "Red"
]
];
这是get方法:
var driverData = JSON.parse(drivers);
function getDriverData()
return driverData;
return
getDriverData: getDriverData
;
在这个控制器中,我尝试获取它,以便查看它是否有效:
var drivers = myDriveApi.getDriverData();
console.log(driverData);
纠正我并解释如何制作 JSON 字符串,如果这是正确的术语,我希望它嵌套。所以每个司机都有一辆汽车,或多辆汽车/车辆。因此,如果我有 1 个司机,我想查看他的详细信息以及他的自有车辆信息。
【问题讨论】:
尝试使用jsonlint.com :) 如果是对象启动,为什么要解析呢? 这不是“JSON 字符串”,而是 javascript 对象。 你有什么问题? “age”和“car”之间多处缺少逗号 【参考方案1】:不,这是一个 JavaScript 对象,可以使用 JSON.stringify(object)
将其转换为 JSON 字符串。
如果您尝试通过 JavaScript 访问它,您不妨完全跳过 JSON,只使用该对象。如果要测试 JSON 字符串是否良好,请使用 jsonlint.com。
【讨论】:
【参考方案2】:它是一个 JavaScript 对象,而不是 JSON 字符串。
在 Bob 和 Rob 的年龄之后,您缺少逗号。不过,玛丽亚一切都很好。
【讨论】:
【参考方案3】:您的“JSON 字符串”似乎是您在脚本标记中拥有的 JavaScript 代码,该代码创建一个 drivers
JavaScript 对象,该对象具有名为 driver
的属性,该属性是其他对象的数组。要成为 JSON,您需要删除 var drivers =
和末尾的分号,只留下您为创建该对象而设置的变量。
例如,假设您有一个“person”变量,它是一个具有“firstName”和“lastName”属性的对象。这是您可以放入脚本中以创建该变量的代码:
var person = firstName: "Jason", lastName: "Goemaat" ;
字符串,甚至 JSON 字符串都用单引号或双引号括起来的脚本表示。要查看该对象的 JSON 的字符串值,您可以这样做:
var json = JSON.stringify(person);
这将为您提供一个有效的 JSON 字符串,该字符串将在控制台中显示:
"firstName":"Jason","lastName":"Goemaat"
要直接设置变量,您需要将其括在单引号或双引号中,但如果字符串包含这些变量,则需要对其进行转义。由于这仅包含双引号,因此我将其用单引号括起来以将其分配给脚本中的变量,然后将其解析为对象。
var json = '"firstName":"Jason","lastName":"Goemaat"';
var person = JSON.parse(json);
JSON 属性名称需要用引号括起来。如果不是,大多数解析器都可以工作,但尽可能正确总是更好。您可以使用jsonlint 的在线工具来检查有效的 JSON。
【讨论】:
谢谢,这对我理解 JSON 有很大帮助。尤其是在控制台能够将 js 对象转换为 JSON 的帮助下,这真是太棒了。以上是关于这是一个正确的 JSON 字符串吗?的主要内容,如果未能解决你的问题,请参考以下文章