我从在线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
)?
答案 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