【问题标题】:How to search through JSON objects to find a specific parameter value?如何通过 JSON 对象搜索以找到特定的参数值?
【发布时间】:2016-11-02 15:41:00
【问题描述】:

我有一些 JSON,基本上看起来像这样:

{
    "inactive_user": {
        "name": "A",
        "id": "1",
        "dob": "01011990",
    },
    "active_staff": {
        "id": "B",
        "dob": "2",
    },
    "active_student": {
        "name": "C",
        "pid": "3",
        "dob": "01011990",
    },
    "no_securityquestion": {
        "name": "D",
        "pid": "4",
        "dob": "01011990",
    }
}

我想要做的是,根据请求中给出的 id,返回具有该 id 的用户(inactive_user、active_staff 等)。

我该怎么做?到目前为止我尝试过的是:

    for (var parent in userObject){
        if(userObject.parent.pid === pid){
            console.log(userObject.parent);
            reply(userObject.parent);
        }
    }

但是 userObject.parent(其中 userObject 是整个 JSON 文件)只是返回 undefined,这很奇怪,因为 parent 将返回文件中每个父对象的名称(inactive_user 等等)

【问题讨论】:

  • 你有 JSON 还是普通对象?
  • 你不搜索 json。 json 是 JS 数据结构的基于字符串的编码。这是一种传输格式。您将 json 解码为本机结构,然后进行搜索。
  • 不管怎样,它是 方括号表示法 -> if(userObject[parent].pid === pid){,所有对象都需要pid 属性

标签: javascript angularjs json node.js


【解决方案1】:

试试这个,

for (var parent in userObject) {
    if (userObject[parent].pid === "3") {
       console.log(userObject[parent]);
      reply(userObject[parent]);
    }
}

【讨论】:

    【解决方案2】:

    要引用对象中的动态键,您必须使用括号表示法。

    for (var parent in userObject){
        if(userObject[parent].pid === pid){
            console.log(userObject[parent]);
            reply(userObject[parent]);
        }
    }
    

    另外,我在您的数据中看到您有一些条目,其中 id 不是pid,而只是id;我不知道您是否希望他们被以与pid 相同的方式对待,但如果是这种情况,您应该相应地更新您的条件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-20
      • 2021-12-05
      • 2014-10-22
      • 1970-01-01
      • 1970-01-01
      • 2017-05-10
      • 1970-01-01
      相关资源
      最近更新 更多