我有一堆对象属性以点分隔的字符串形式出现,例如"availability_meta.supplier.price"
,我需要给分配一个相应的值record['availability_meta']['supplier']['price']
,以此类推。
并非所有的东西都深3层:许多深只有1层,许多深于3层。
有没有一种很好的方法可以用Java编程地分配它?例如,我需要:
["foo.bar.baz", 1] // --> record.foo.bar.baz = 1
["qux.qaz", "abc"] // --> record.qux.qaz = "abc"
["foshizzle", 200] // --> record.foshizzle = 200
我想我可以一起破解某些东西,但是我心中没有什么好的算法,因此不胜感激建议。我正在使用lodash(如果有帮助的话),并开放给其他图书馆,这些图书馆可能会使您快速工作。
编辑此代码在后端,不经常运行,因此不必针对大小,速度等进行优化。实际上,代码可读性对于将来的开发人员而言将是一个加分项。
编辑2这与引用的重复项不同。即,我需要能够对同一对象多次执行此分配,并且“重复”答案每次都将简单地覆盖子键。请重新打开!
您在问题中提到lodash,所以我认为我应该添加它们的简单对象set()
和get()
函数。只需执行以下操作:
_.set(record, 'availability_meta.supplier.price', 99);
您可以在此处了解更多信息:https : //lodash.com/docs#set
这些函数还可以让您执行更复杂的操作,例如指定数组索引等:)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句