如何检查JSON字符串在JavaScript中是否有值?
有没有办法检查json字符串是否有值(char或string)?以下是一个例子:如何检查JSON字符串在JavaScript中是否有值?,javascript,Javascript,有没有办法检查json字符串是否有值(char或string)?以下是一个例子: { "firstName": "John", "lastName": "Smith", "age": 25, "address": { "streetAddress": "21 2nd Street", "city": "New York", "state": "NY", "postalCode": 10021
{
"firstName": "John",
"lastName": "Smith",
"age": 25,
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": 10021
}
}
我必须检查这个json是否有“m”。它必须知道“m”存在于值中。使用此方法,如果您有json字符串,则可以使用
json=$.parseJSON(jsonStr)
来解析-
function checkForValue(json, value) {
for (key in json) {
if (typeof (json[key]) === "object") {
return checkForValue(json[key], value);
} else if (json[key] === value) {
return true;
}
}
return false;
}
假设JSON对象被分配给var user
if(JSON.stringify(user).indexOf('m') > -1){ }
抱歉,在阅读新评论时,我看到您只是想查看字符串是否仅在键中。我以为您在整个JSON中寻找“m”(作为字符串)假设您更正了对象语法,您可以使用
for
循环遍历对象中的属性:
for(props in myObj) {
if(myObj[props] === "m") { doSomething(); }
}
可能是这样的吗
function parse_json(the_json, char_to_check_for)
{
try {
for (var key in the_json) {
var property = the_json.hasOwnProperty(key);
return parse_json(property);
}
}
catch { // not json
if (the_json.indexof(char_to_check_for) !=== -1)
{
return true;
}
return false;
}
}
if (parse_json(my_json,'m'))
{
alert("m is in my json!");
}
如果只查看一层而不是子字符串:
const hasValue = Object.values(obj).includes("bar");
const list = Object.values(a);
for (let i = 0; i < list.length; i++) {
const object = list[i];
if (typeof object === "object") {
list.splice(i, 1); // Remove object from array
list = list.concat(Object.values(object)); // Add contents to array
}
}
// It is important to join by character not in the search substring
const hasValue = list.join("_").includes("m");
如果在一个图层中查找子字符串,并且没有对象作为值:
const hasChar = Object.values(obj).join("").includes("m");
如果在多层中查找子字符串:
const hasValue = Object.values(obj).includes("bar");
const list = Object.values(a);
for (let i = 0; i < list.length; i++) {
const object = list[i];
if (typeof object === "object") {
list.splice(i, 1); // Remove object from array
list = list.concat(Object.values(object)); // Add contents to array
}
}
// It is important to join by character not in the search substring
const hasValue = list.join("_").includes("m");
const list=Object.values(a);
for(设i=0;i
注意:如果改为搜索密钥,请选中
这不是一个字符串,它是一个对象(除了语法错误),现在它是-但你的意思是你想看看键“m”是否有值?元素,它是一个“m”,在值中不是在键中字符串看起来像:var foo='{“firstName”:“John”};这篇文章可能会给你一些想法:你永远不会检查嵌入对象后的任何键!仅当递归调用为true时才应返回。在后续递归调用中检查它,如果搜索值位于嵌入对象中,则将失败。