Javascript 将类似JSON的字符串转换为JSON
我有一个描述对象的字符串,希望将其转换为JS对象 字符串:Javascript 将类似JSON的字符串转换为JSON,javascript,json,string,object,Javascript,Json,String,Object,我有一个描述对象的字符串,希望将其转换为JS对象 字符串: { "platform": "desktop", pageName: "JD Sports - Nike Air Force 1 07 LV8 Herren", //Page Title pageType: "product", //Page Type plu: "16085947_jdsportsde"
{
"platform": "desktop",
pageName: "JD Sports - Nike Air Force 1 07 LV8 Herren", //Page Title
pageType: "product", //Page Type
plu: "16085947_jdsportsde", //Product Code
description: "Nike Air Force 1 07 LV8 Herren", //Product Name
unitPrice: "110.00", //Product Price
category: "Herren \u003E Herrenschuhe \u003E Sneakers", //End level category
categoryId: "jdsportsde_ct81275jdsportsde_ct81279jdsportsde_ct81356jdsportsde", //End level category Id
sale: false, //is on sale? true/false
brand: "Nike", //Product Brand
ownbrand: false, //own brand product? true/false
exclusive: false, //exclusive product? true/false
onlineexlusive: false, //online exlcusive product? true/false
currency:"EUR",
variants: [
{
name:"41",
upc: "0194501189583",
page_id_variant: "16085947_jdsportsde.0194501189583"
}
, {
name:"42.5",
upc: "0194501189606",
page_id_variant: "16085947_jdsportsde.0194501189606"
}
, {
name:"45",
upc: "0194501189644",
page_id_variant: "16085947_jdsportsde.0194501189644"
}
, {
name:"47",
upc: "0194501189675",
page_id_variant: "16085947_jdsportsde.0194501189675"
}
, {
name:"47.5",
upc: "0194501189682",
page_id_variant: "16085947_jdsportsde.0194501189682"
}
, {
name:"48.5",
upc: "0194501189699",
page_id_variant: "16085947_jdsportsde.0194501189699"
}
, {
name:"L",
upc: "0194501189569",
page_id_variant: "16085947_jdsportsde.0194501189569"
}
]
};
因为键不在引号中,而且由于注释,我不能使用JSON.parse()
如何将字符串转换为对象?它看起来更像实际的javascript而不是JSON 虽然它通常被认为是,但您可以使用
eval
来解析(并执行!)它,但在用户浏览器或后端可能会运行不受控制的脚本:
var str=`{
“平台”:“桌面”,
页面名称:“京东体育-Nike Air Force 1 07 LV8 Herren”//页面标题
页面类型:“产品”,//页面类型
plu:“16085947_jdportsde”,//产品代码
说明:“Nike Air Force 1 07 LV8 Herren”,//产品名称
单价:“110.00”,//产品价格
类别:“Herren\u003E Herrenschuhe\u003E运动鞋”//末级类别
类别Id:“jdportsde_ct81275jdportsde_ct81279jdportsde_ct81356jdportsde”,//最终级别类别Id
销售:假,//正在销售?真/假
品牌:“Nike”,//产品品牌
自有品牌:假,//自有品牌产品?真/假
独家:假,//独家产品?真/假
onlineexlusive:false,//在线独家产品?真/假
货币:“欧元”,
变体:[
{
姓名:"41",,
upc:“0194501189583”,
页面id变量:“16085947\u jdportsde.0194501189583”
}
, {
名称:“42.5”,
upc:“0194501189606”,
页面id变量:“16085947\u jdsportsde.0194501189606”
}
, {
姓名:"45",,
upc:“0194501189644”,
页面id变量:“16085947\u jdportsde.0194501189644”
}
, {
姓名:“47”,
upc:“0194501189675”,
页面id变量:“16085947\u jdportsde.0194501189675”
}
, {
名称:“47.5”,
upc:“0194501189682”,
页面id变量:“16085947\u jdportsde.0194501189682”
}
, {
名称:“48.5”,
upc:“0194501189699”,
页码id变量:“16085947\u jdsportsde.0194501189699”
}
, {
姓名:“L”,
upc:“0194501189569”,
页面id变量:“16085947\u jdportsde.0194501189569”
}
]
};`;
评估(“obj=”+str);
console.log(对象pageName)代码>首先,如果您完全信任源代码,您可以使用eval,因为它看起来更像JS而不是JSON!换句话说,除非你100%确定,否则不要这样做
var s=`{
“平台”:“桌面”,
页面名称:“京东体育-Nike Air Force 1 07 LV8 Herren”//页面标题
页面类型:“产品”,//页面类型
plu:“16085947_jdportsde”,//产品代码
说明:“Nike Air Force 1 07 LV8 Herren”//产品名称
}`;
var-obj;
评估('obj='+s);
控制台日志(对象页面类型);
//并将其转换为有效的JSON
var json=json.stringify(obj);
log('JSON:',JSON)代码>最好的解决方案是修复提供此字符串的代码,而不是在创建错误格式的字符串后尝试处理它。宁愿解决原因而不是后果
如果这是不可能的,或者出于任何原因您不想这样做,那么唯一的解决方案就是使用一个小技巧:
const string = `{
"platform": "desktop",
pageName: "JD Sports - Nike Air Force 1 07 LV8 Herren", //Page Title
pageType: "product", //Page Type
plu: "16085947_jdsportsde", //Product Code
description: "Nike Air Force 1 07 LV8 Herren", //Product Name
unitPrice: "110.00", //Product Price
category: "Herren > Herrenschuhe > Sneakers", //End level category
categoryId: "jdsportsde_ct81275jdsportsde_ct81279jdsportsde_ct81356jdsportsde", //End level category Id
sale: false, //is on sale? true/false
brand: "Nike", //Product Brand
ownbrand: false, //own brand product? true/false
exclusive: false, //exclusive product? true/false
onlineexlusive: false, //online exlcusive product? true/false
currency:"EUR",
variants: [
{
name:"41",
upc: "0194501189583",
page_id_variant: "16085947_jdsportsde.0194501189583"
}
, {
name:"42.5",
upc: "0194501189606",
page_id_variant: "16085947_jdsportsde.0194501189606"
}
, {
name:"45",
upc: "0194501189644",
page_id_variant: "16085947_jdsportsde.0194501189644"
}
, {
name:"47",
upc: "0194501189675",
page_id_variant: "16085947_jdsportsde.0194501189675"
}
, {
name:"47.5",
upc: "0194501189682",
page_id_variant: "16085947_jdsportsde.0194501189682"
}
, {
name:"48.5",
upc: "0194501189699",
page_id_variant: "16085947_jdsportsde.0194501189699"
}
, {
name:"L",
upc: "0194501189569",
page_id_variant: "16085947_jdsportsde.0194501189569"
}
]};`
let object
eval("object = " + string)
这将基于string
创建一个对象,您从哪里获取该字符串?我的意思是,您在后端使用的语言是rails还是c#。它是否也包含注释?如果是这样的话,他们也会想要脱衣的。@QuadSquad工作了!非常感谢。