我有以下要转换为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对象的语法有什么不同?
答案 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
的任何环境。