JSON Sintax - 密钥必须用引号括起来吗?

时间:2017-09-19 18:14:31

标签: javascript json string

我有以下要转换为JSON的字符串:

'{clientId: "1239268108.1505087088", userId: "0.4744496956388684", "url": "http://boomfix.es/", "pageUrl": "1", "timer": "15", "clickCount": "4", "mouseMax": "", "objective": ""}'

为什么我不能在此字符串上使用JSON.parse方法?

每个JSON元素都必须在引号中JSON.parse才能工作吗?那么这与Javascript对象的语法有什么不同?

4 个答案:

答案 0 :(得分:1)

尝试用引号包装你的字段名称 - 我发现在某个阶段对我有用

答案 1 :(得分:1)

如果在标识符clientId和userId周围加上引号,它应该可以正常工作。如果这是真的,我可以解析它。

https://jsfiddle.net/21d9qsgn/

var x = JSON.parse('{"clientId": "1239268108.1505087088", "userId": 
"0.4744496956388684", "url": "http://boomfix.es/", "pageUrl": "1", "timer": 
"15", "clickCount": "4", "mouseMax": "", "objective": ""}');
alert(x.clientId);

答案 2 :(得分:1)

正如其他人所提到的,你的字符串是无效的JSON。但是,这是一个让它有效的hacky解决方案:

var json_string = '{clientId: "1239268108.1505087088", userId: "0.4744496956388684", url: "http://boomfix.es/", pageUrl: "1", timer: "15", clickCount: "4", mouseMax: "", objective: ""}'

json_string = json_string.replace(/(\s*?{\s*?|\s*?,\s*?)(['"])?([a-zA-Z0-9]+)(['"])?:/g, '$1"$3":')

var json = JSON.parse(json_string)

console.log(json.clientId)

答案 3 :(得分:1)

正如我们在评论中提到的,这不是有效的JSON格式(属性名称必须是"引用"也是),

我认为您应该像这样调整您的请求:

var query = gapi.client.analytics.data.realtime.get(({ 'ids':'ga:' + profile_id, 'metrics':'rt:totalEvents', 'dimensions':'rt:eventAction,rt:eventLabel,rt:eventCategory'‌​, 'max_results':'25'});
query.execute(function handleRTResponse(resultAsObject, resultAsJson) {
    console.log(resultAsJson); // this should be a valid JSON
});

请告诉我这对您有何帮助,因为我现在没有gapi的任何环境。