如何检查 JSON 对象键是对象还是字符串? [复制]

Posted

技术标签:

【中文标题】如何检查 JSON 对象键是对象还是字符串? [复制]【英文标题】:How to check whether a JSON object key is an object or string? [duplicate] 【发布时间】:2021-02-28 08:57:32 【问题描述】:

所以现在,我创建了一个 JSON 对象的示例,其中:

var myObj = 
    address: 
        0: ["41 Lake Avenue"]
    ,
    name: "jake"

myObj 本身作为一个整体是一个 JSON 对象,在其中,我有两个键,分别是地址和名称。所以 address key 的值也是一个 Object,因为它在大括号中,其中 name key 值只是一个字符串

我想在 javascript 中写一个简单的检查来检查 myObj 中的 keys 是否是对象字符串。因此,如果它的一个对象,它返回true,如果它的不是一个对象,它返回false。因此,地址为真,姓名为假。

我试着四处寻找类似于 isArray() 的 isObject() 方法,但显然我找不到,所以我需要一些帮助,所以我在下面写了一个伪代码用于逻辑:

for (i=0;i<2;i++) 
   if myObj[i] is Object 
      return true;
   else
      return false;

【问题讨论】:

你可以使用typeof来检查它是否是字符串。 我是新来的,很少用 JS 编程,但 wtf 是这些 cmets 和答案。你做错了整个事情。用于for (k in myObj) console.log(typeof(myObj[k]) == 'string'); typeof 运算符返回一个字符串,表示未计算的操作数的类型:for (let [key, value] of Object.entries(myObj)) if( value &amp;&amp; typeof value =='object')return true; else return false; 【参考方案1】:

您需要使用 typeof(var) 运算符: https://developer.mozilla.org/en-US/docs/Web/javascript/Reference/Operators/typeof

对象:

typeof yourVariable === 'object' && yourVariable !== null

对于字符串:

typeof yourVariable === 'string'

【讨论】:

【参考方案2】:
if (typeof varible === 'object') 
    // is object

但 Null 也被识别为对象。所以你也可以证明这一点。

【讨论】:

【参考方案3】:

您可以使用typeof

注意:这个问题不清楚,也没有解释如果有多个键值作为对象会发生什么。因为下面的函数会在遇到值为对象的键时立即返回

var myObj = 
  address: 
    0: ["41 Lake Avenue"]
  ,
  name: "jake"



function isObject(obj) 
  for (let keys in obj) 
    if (typeof obj[keys] === 'object' && obj[keys] !== null) 
      return true
    
  


console.log(isObject(myObj))

【讨论】:

我认为使用for (let [key,value] of Object.entries(myObj)) 会更好,因为他获得了属性名称。 example here 在 for 循环之后也可能是 return false ;) ?

以上是关于如何检查 JSON 对象键是对象还是字符串? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何检查json返回值是数组还是字典的形式

当 JSON 字段键是日期时,如何将 JSON 对象解组为 Golang 结构?

如何检查Javascript Map是不是有对象键

如何检查获取的响应是不是是javascript中的json对象

如何检查传递的对象是否是MarkLogic中的有效JSON?

SwiftyJSON - 可以检查对象类型吗?