繁体   English   中英

Javascript:使用大括号解析JSON

[英]Javascript: Parse JSON with extra curly braces

我有这个JSON对象:

var dataObj = { data: '\n{ sizeMap:{\nxSizes: "REGULAR|SMALL", \ncurrItemId: "",\ncurrItemSize: "",\nmanufacturerName:"Rapid",\npartNumber: "726G", \nsuitStyle: "R",\nhasSC: "",\nhasInseam:""\n}\n}',type: 'text',next: null,prev: null };

我想读sizeMap内部对象dataObj.data值与:

 console.log(dataObj.data.sizeMap);

但这是undefined 我尝试了JSON.parse(dataObj.data) ,它的错误是:

{ sizeMap:{
  ^
  SyntaxError: Unexpected token s

console.log(dataObj.data)的输出是:

{ sizeMap:{
  xSizes: "REGULAR|SMALL",
  currItemId: "",
  currItemSize: "",
  manufacturerName:"Rapid",
  partNumber: "726G",
  suitStyle: "R",
  hasSC: "",
  hasInseam:""
  }
}

因此,有多余的花括号来包裹JSON吗? 注意:这在Node.js中

那不是JSON,那是一个JavaScript对象。 JSON是一种用于表示数据的文本格式。

对象内部的字符串data也不是JSON。 要成为有效的JSON,将需要在所有属性名称周围加上引号:

{
  "sizeMap": {
    "xSizes": "REGULAR|SMALL",
    "currItemId": "",
    "currItemSize": "",
    "manufacturerName":"Rapid",
    "partNumber": "726G",
    "suitStyle": "R",
    "hasSC": "",
    "hasInseam":""
  }
}

注意,括号实际上应该在那儿,这不是问题。

该字符串可以用作JavaScript,因此您可以使用eval将其转换为对象:

eval("(" + dataObj.data + ")").sizeMap

自然,每当您使用eval时,通常都会采取预防措施。 在执行代码时,必须确保没有人可以在字符串中放入有害的内容。

您的JSON无效。 尝试通过http://jsonlint.com/之类的工具运行它

密钥也需要用引号引起来。

例如

{
    "sizeMap": {
        "xSizes": "REGULAR|SMALL",
        "currItemId": "",
        "currItemSize": "",
        "manufacturerName": "Rapid",
        "partNumber": "726G",
        "suitStyle": "R",
        "haSC": "",
        "hasInseam": ""
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM