这是一个正确的 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 字符串吗?的主要内容,如果未能解决你的问题,请参考以下文章

json字符串转对象,遇到空字符串会抛异常吗

在运行时更改连接字符串——这是正确的方法吗?

这是一个正确的 JSON 吗?我们如何解析它?

这是从片段中获取字符串资源的正确方法吗?

这是用熊猫中列的平均值替换字符串的正确方法吗?

jqGrid 子网格的 JSON 对象