这是我通过JSLint运行代码后得到的结果:
预期':'而是看到'+'。 '“预订”:“'+ bookname +'”'第3行第23列
意外的尾随空间。 ' “书”: “ '+ BOOKNAME +'”'
我想在JSON字符串中指定,如果它们在“Book”列中包含“bookid”的值,则查找结果(参见下面的第1-4行)。
我知道语法有错误。它工作得很好,直到我决定我需要使用本地存储的值。我不确定如何在这种查询中正确调用常规变量。有什么问题?
var bookname = localStorage.getItem('bookid');
var whereObject = {
"$and": [{
'"Book":"'+bookname + '"'
}
}, {
"$or": [{
"calf_id": {
"$regex": "^" + value,
"$options": "i"
}
}, {
"cow_id": {
"$regex": "^" + value,
"$options": "i"
}
}, {
"Sire": {
"$regex": "^" + value,
"$options": "i"
}
}, {
"Color": {
"$regex": "^" + value,
"$options": "i"
}
}]
}]
};
return JSON.stringify(whereObject);
value
是搜索栏中的值。
我尝试使用给出的建议来改变它,但它只会产生更多警告,类似于我已经拥有的警告。
我基本上需要知道在查询中使用先前定义的变量的正确方法。我不知道正确的语法,只能找不到任何东西
答案 0 :(得分:1)
'"Book":"'+bookname + '"'
你为什么要使用'
?我不确定你为什么这样做。
在json中,你应该在:
charachter之前结束字符串。在:
后输入Book
的值。
"KEY":"VALUE"
如果Book
的值是字符串:
"Book" : "hello this is string"
如果Book
的值是变量:
"Book": bookname
如果您希望Book
具有bookname
变量的值但用引号括起来,那么
"Book": "'" + bookname + "'"
如果仔细观察并计算json中{和}的数量,你会看到数字不均匀!这意味着你有错误匹配。 这是没有语法错误的有效json:
{
"$and": [
{
"Book":"bookname"
},
{
"$or": [
{"calf_id": {"$regex":"^" + value,"$options": "i"}},
{"cow_id": {"$regex":"^" + value,"$options": "i"}},
{"Sire": {"$regex":"^" + value,"$options": "i"}},
{"Color": {"$regex":"^" + value,"$options": "i"}}
]
}
]
}