通过字符串路径访问和修改 JSON 对象

Access and modify JSON-Object via string path

提问人:Solon 提问时间:5/23/2023 更新时间:10/4/2023 访问量:144

问:

我的问题很简单,但网络上似乎没有人回答它,我无法理解它。

我基本上想编写一个 setter 函数,它接受一个 JSON 对象并将键设置为一个值,无论路径是否已经存在。

变式1:

setPath(payload: Object, path: string, value: any) {
 // ???
}

obj: Object = {}
newObj: Object = setPath(obj, "foo.bar[0], "wut");

变式2:

setPath(payload: Object, path: string, value: any){
 // ???
}
obj: Object {
 foo: {
  bar: []
 }
}
newObj: Object = setPath(obj, "foo.bar[0]", "wut");

其中,它们都会导致 JSON-Object 如下所示:

{
 foo: {
  bar: [
   "wut" 
  ]
 }
}

感谢您的帮助

JavaScript JSON TypeScript 字符串 对象

评论

2赞 cmgchess 5/23/2023
youmightnotneed.com/lodash#set
0赞 Pointy 5/23/2023
您必须解析路径表达式,然后逐步遍历目标对象图,直到找到最后一个目标对象,然后设置属性值。具体效果取决于您需要路径表达式的外观。(例如,您的路径是否能够包含带有空格或嵌入“.”字符的属性名称?
0赞 Solon 5/23/2023
多亏了@cmgchess我刚刚用 lodash xD 解决了它

答:

2赞 Solon 5/23/2023 #1

感谢@cmgchess,

https://youmightnotneed.com/lodash#set

在这个链接中,你可以找到一个普通的 JavaScript 解决方案,或者像我一样,只使用 lodash 提供的方法