通过路径

时间:2017-09-13 18:20:33

标签: javascript json

我从在线API获得了一个大的,嵌套的JSON响应。我只需要3个值,但它们是完全嵌套的。我知道每个字段的确切路径。例如,给定:

obj = {
    "result": {
        "data": {
            "point1": "x",
            "value": 2
        },
        "foo": {
            "bar": 7
        }
    }
}

路径let p = 'result.data.value'我希望能够let x = getElement(obj, p);并且x为2。

我写了一个简单的函数(删除了所有错误检查以保持干净):

const getJSONElement = (data, path) => {
  for(let p of path.split('.')) {
    data = data[p];
  }
  return data;
};

它有效,但我觉得我缺少一些东西,或者没有效率。是否有更好的方法来获取元素(可能使用Array.reduce)?

1 个答案:

答案 0 :(得分:1)

您可以使用拆分路径值缩小对象。



val map = Map("id" -> "1", "name" -> "2")
val u: User = map // implicit conversion into User
val m: Map[String, String] = u // implicit conversion back into Map