如何检查 JSON 字符串在 JavaScript 中是不是有值?
Posted
技术标签:
【中文标题】如何检查 JSON 字符串在 JavaScript 中是不是有值?【英文标题】:How to check if a JSON string has a value in JavaScript?如何检查 JSON 字符串在 JavaScript 中是否有值? 【发布时间】:2013-08-21 17:07:50 【问题描述】:有什么方法可以检查 json 字符串是否有值(char 或 string)?示例如下:
"firstName": "John",
"lastName": "Smith",
"age": 25,
"address":
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": 10021
我必须检查这个 json 是否有“m”。它必须知道“m”存在于一个值中。
【问题讨论】:
这不是一个字符串,它是一个对象(除了语法错误) 现在是 - 但你的意思是你想看看键“m”是否有值? i ment,它 serach 'm',值不在键中 一个字符串看起来像:var foo = '"firstName": "John"'; 这篇文章可能对你有一些想法:Search a javascript object 【参考方案1】:使用这个方法,如果你有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;
【讨论】:
你永远不会在嵌入对象之后检查任何键!仅当递归调用为真时才应返回。 它在后续的递归调用中得到检查【参考方案2】:假设 JSON 对象分配给 var user
if(JSON.stringify(user).indexOf('m') > -1)
抱歉,在阅读新的 cmets 时,我发现您只是想查看字符串是否仅在键中。我以为你在整个 JSON 中寻找一个“m”(作为一个字符串)
【讨论】:
【参考方案3】:假设您纠正了对象语法,您可以使用 for
循环遍历对象中的属性:
for(props in myObj)
if(myObj[props] === "m") doSomething();
【讨论】:
在搜索值在嵌入对象中的情况下会失败。【参考方案4】:可能是这样的?
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!");
【讨论】:
【参考方案5】:如果查看一层而不是子字符串:
const hasValue = Object.values(obj).includes("bar");
如果在一层中查找子字符串,并且没有对象作为值:
const hasChar = Object.values(obj).join("").includes("m");
如果在多层中查找子字符串:
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");
注意:如果要搜索密钥,请检查 this post
【讨论】:
以上是关于如何检查 JSON 字符串在 JavaScript 中是不是有值?的主要内容,如果未能解决你的问题,请参考以下文章
如何在javascript中执行if语句来检查JSON数组是不是为空?
检查字符串是不是是 Typescript 中的有效 JSON
如何检查获取的响应是不是是javascript中的json对象