2016-11-29 88 views
0
var filter1 = " { where:{ businessName:{ $like:'%A'} ,'userId': { $gt: 0} }, limit: 1 }" 

我想让它传递这样JSON解析JSON字符串抛出意外标记

var filter = { where:{ businessName:{ $like:'%A'} ,'userId': { $gt: 0} }, limit: 1 } 

我这样做是为了使它像JSON的例子。

JSON.parse(filter) 

但它抛出以下异常:

SyntaxError: Unexpected token w in JSON at position 3

+2

你的字符串没有JSON。 – Lain

回答

2

JSON无效。使用""所有键和值,除了numbersbools

var filter1 = '{ "where": { "businessName" :{ "$like":"%A"} ,"userId": { "$gt": 0} }, "limit": 1 }' 

var filter1 = '{ "where": { "businessName" :{ "$like":"%A"} ,"userId": { "$gt": 0} }, "limit": 1 }'; 
 

 
var filter = JSON.parse(filter1); 
 

 
console.log(filter);

1

这不是有效的JSON字符串。它更像是一个用引号包裹的JavaScript对象。

在JSON标准的所有键都应该用引号引用,所以这里是你的JSON会是什么样子:

"{"where":{"businessName":{"$like":"%A"},"userId":{"$gt":0}},"limit":1}" 

由于您的字符串是简单地包裹在引号中的JavaScript对象,你可以在正确的到达JSON字符串通过简单地去掉引号:

var filter1 = { where:{ businessName:{ $like:'%A'} ,'userId': { $gt: 0} }, limit: 1 } 

并运行它通过JSON.stringify

JSON.stringify(filter1); 
+0

我的查询引擎无法识别它使用stringfy – danielad

+0

@danielad,对不起,不明白您的意见 –

+0

是的,我必须使用该json作为查询和使用stringfy查询无法识别的地方。 – danielad