javascript - 将复杂的 JavaScript 对象转换为点符号对象

标签 javascript syntax

我有一个像

这样的对象
{ "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/

相关文章:

ruby -::运算符在 Ruby 中如何工作?

javascript - html/javascript 如何使用按钮单击方法显示用户输入?

javascript - 如何在 HTML 中像普通 javascript 一样使用 NPM 包

bash - 如何制作 "if not true condition"?

ruby-on-rails - RailsTutorial 3.2 Ch 11 - PostgreSQL 语法错误中断状态提要

mysql - 获取 MySQL 中现有行的插入语句

javascript 基础 - 时间死区,提升或关闭

javascript - 创建新实例的测试函数

javascript - 显示随机 div onclick

python - 这个语法叫什么? (int)(value) 与 int(value) 相同