2017-02-01 52 views
0

我想将HTML元素中的脚本内容转换为JSON。但问题是并非所有的键都有引号。这里是脚本:JSON解析不能在html脚本元素上工作

{ 
    route: "PDFilter", 
    websiteId: "52", 
    lang: "us", 
    layout: { 
    PDPage: { 
     Banner: 1, 
     Spotlight: 1, 
     HotProduct: 1, 
     ContentSource: 0, 
     SocialMedia: 0, 
     ScenarioFilter: 1, 
     CategoryHotProduct: 1, 
     CategoryHotProduct_9: 0 
    }, 
    PDPageSort: [ 
     "Banner", 
     "Spotlight", 
     "ScenarioFilter", 
     "HotProduct", 
     "CategoryHotProduct" 
    ] 
    }, 
    product: { 
    l2id: "1", 
    l3id: "20501", 
    pdid: "0", 
    layoutType: "2", 
    theme: 1, 
    IsCommercial: 0, 
    bannerIsRoller: 0 
    }, 
    productLine: { 
    MDA: { 
     Html: "", 
     Image: "" 
    }, 
    blackVersion: 0, 
    rogVersion: 0 
    }, 
    env: "prod", 
    breadcrumb: { 
    Home: { 
     LevelName: "Home", 
     Link: "//www.asus.com/us/" 
    }, 
    L2: { 
     LevelName: "Phones", 
     Link: "//www.asus.com/us/Phone/" 
    }, 
    L3: { 
     LevelName: "ZenFone", 
     Link: "//www.asus.com/us/Phone/ZenFone-Products/" 
    } 
    } 
} 

解析说,期待一个字符串,但该脚本具有正确的JSON格式。

+5

看起来像一个JS对象,而不是JSON字符串。不需要解析对象,它已经是一个对象。 – Teemu

+0

如果它是有效的JSON,它将引用所有名称 – rasmeister

+1

“**我试图将HTML元素中的脚本内容转换为JSON。**”。这让我想到OP正试图将该对象转换为JSON字符串。但他们继续说:“**解析说,这是期待一个字符串,但该脚本具有正确的JSON格式**”。也许OP在['JSON.parse'](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse)和['JSON.stringify'](https ://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)。 – wing

回答

0

当您应该使用JSON.stringify时,您正在使用JSON.parseJSON.parse用于将JSON字符串转换为JavaScript对象,而JSON.stringify用于将JavaScript对象转换为JSON字符串。