正在查找对象内部的JSON路径

Finding JSON path inside object

本文关键字:JSON 路径 内部 对象 查找      更新时间:2023-09-26

如何签入JSON对象,输入路径是否存在?

var obj = {
  "schemaOne": {
    "name": "abc",
    "Path": "i.abc",
    "count": 5347,
    "subFolders": [
    ]
  },
  "schemaTwo": {
    "name": "cde",
    "Path": "i.cde",
    "count": 0,
    "subFolders": [
      {
        "name": "efg",
        "Path": "",
        "count": 0,
        "subFolders": [
        ]
      },
      {
        "name": "hij",
        "Path": "i.hij",
        "count": 1,
        "subFolders": [
        ]
      }
    ]
  }
}
var inputpath = "obj.count";

在做了几项研究后,我发现了以下代码。在该代码中,o.Path是用户已知的。但我想修改代码,以便动态检查JSON对象中是否存在obj.count

function upd(o, path, count) {
  if (o.Path == path) {
    o.count = count;
  } else {
    var arr;
    if (Array.isArray(o)) arr = o;
    else if (o.subFolders) arr = o.subFolders;
    else return;
    for(var j=0; j < arr.length; j++) {
      upd(arr[j], path, count);
    }
  }
}

您的问题不是很清楚,用例也不是。正如有人告诉你的那样,obj是一个JavaScript对象,而不是JSON。

如果我理解正确,您需要检查该对象中是否存在以字符串形式表示的路径(如"obj.count")。

一个非常快速但不安全的解决方案(eval是邪恶的,几乎在任何情况下都应该避免)可以是:

if(eval(inputpath)){
    //... do something
}

或者,我建议您编写一个函数,获取一个对象和一个字符串(路径)作为参数,解析字符串路径并检查对象是否包含这样的路径。

从这里开始:使用字符串键访问嵌套的JavaScript对象