在javascript中解析字符串json会引发意外的令牌

时间:2016-11-29 07:17:37

标签: javascript json

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

我想像JSON

那样传递它
  var filter =  { where:{ businessName:{ $like:'%A'} ,'userId': { $gt: 0} }, limit: 1 } 

我这样做是为了让它像JSON示例一样。

JSON.parse(filter)

但它引发了以下异常:

  

SyntaxError:位置3的JSON中的意外标记w

2 个答案:

答案 0 :(得分: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 :(得分: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);