[英]How to check if a JSON string has a value in JavaScript?
有沒有辦法檢查json字符串是否具有值(字符或字符串)? 這是示例:
{
"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 用戶
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 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");
注意:如果要搜索密鑰,請查看此帖子
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.