我有一个像
这样的对象{ "status": "success", "auth": { "code": "23123213", "name": "qwerty asdfgh" } }
我想将它转换为点符号(一级)版本,例如:
{ "status": "success", "auth.code": "23123213", "auth.name": "qwerty asdfgh" }
目前我正在使用字段手动转换对象,但我认为应该有更好、更通用的方法来执行此操作。有吗?
注意:有一些例子显示相反的方法,但我找不到确切的方法。
注意 2:我希望它与我的服务器端 Controller 操作绑定(bind)一起使用。
最佳答案
您可以递归地将属性添加到新对象,然后转换为 JSON:
var res = {};
(function recurse(obj, current) {
for(var key in obj) {
var value = obj[key];
var newKey = (current ? current + "." + key : key); // joined key with dot
if(value && typeof value === "object") {
recurse(value, newKey); // it's a nested object, so do it again
} else {
res[newKey] = value; // it's not an object, so set the property
}
}
})(obj);
var result = JSON.stringify(res); // convert result to JSON
关于javascript - 将复杂的 JavaScript 对象转换为点符号对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13218745/