将扁平化的键->值对转换为嵌套对象

2023-12-25

将以下键->值对象“数组”转换为正确的“JSON”样式对象的最简单方法是什么?下面的示例将输入转换为图表。

var input = {
    "graph.default.seriesColor" : ["#cccccc", "#3c3c3c"],
    "graph.default.stackSeries" : false,
    "graph.default.title.text" : "Hello!",
    "graph.default.title.show" : false,
    "graph.default.axesDefaults.show" : true,
    "graph.default.axesDefaults.min" : 17,
    "graph.default.axesDefaults.max" : 20,
};

var graph = {
    default: {
        seriesColor: ["#cccccc", "#3c3c3c"],
        stackSeries: false,

        title: {
            text: "Hello!",
            show: false
        },

        axesDefault: {
            show: true,
            min: 17,
            max: 20
        }
    }
};

我考虑过使用 eval,但是它很快就以递归方式变得复杂。


出于某种原因,我真的很想为此编写一个函数:

function makeObj(input)
{
    var output = {};

    for(var key in input)
    {
        var nodes = key.split('.'), dest = output;

        if(nodes.length < 1)
            continue;

        for(var i = 0; i < (nodes.length - 1); ++ i)
        {
            var node = nodes[i];

            dest = (dest[node] === undefined) ?
                        (dest[node] = {}) : dest[node];
        }

        dest[nodes[nodes.length - 1]] = input[key];
    }

    return output;
}

graph = makeObj(input);

显然不同于eval解决方案,这只会接受您所描述的确切格式的字符串(x.y.z)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将扁平化的键->值对转换为嵌套对象 的相关文章

随机推荐

  • 如何在系统级别将目录添加到 Perl 库路径?

    在标准 Linux 设置中 我可以在哪里添加目录 INC多变的 In the etc profile文件中 我添加了 export PERLLIB PERLLIB foo bar export PERL5LIB PERL5LIB foo b
  • 将盐与哈希密码一起存储的安全性如何

    如果您查看过 ASP NET 会员系统的表架构 它们会存储原始密码的哈希值以及用于生成密码的盐 请参阅下面的架构 dbo aspnet 会员资格 ApplicationId UserId Password PasswordFormat Pa
  • AngularJS 多重解析

    这是我的ui router特定路线的配置 state app merchant url start merchant views mainView templateUrl partials start merchant html css a
  • Tensorflow模型保存和加载

    如何像我们在 do keras 中所做的那样用模型图保存张量流模型 我们可以保存整个模型 权重和图表 并稍后导入 而不是在预测文件中再次定义整个图表 在喀拉斯 checkpoint ModelCheckpoint RightLane epo
  • 新手:了解 main 和 IO()

    在学习 Haskell 时 我想知道何时执行 IO 操作 我在几个地方发现了这样的描述 I O 操作的特殊之处在于 如果它们落入主函数中 就会执行它们 但在下面的示例中 greet 永远不会返回 因此不应打印任何内容 import Cont
  • 更改所有页面的文本方向

    我正在开发一个可以使用多种语言的网络项目 我已经完成了所有这些 我还有一件事 以英文显示时的页面是从左到右 我网站上的某些语言需要从右到左 请注意 我的问题是关于整个页面而不是字段中的文本 请问我该怎么做 我使用此代码来启动多种语言的线程
  • 如何在 Rails 4 中查询数组列?

    我找不到关于如何查询的好文章array columns在 Rails 中 我遇到需要查询 Rails 中的数组列 我从一篇教授如何进行基本查询的文章中找到here http blog arkency com 2014 10 how to s
  • 如何在 MySQL 中调度存储过程

    我有这个存储过程 例如 我如何以 5 秒的间隔运行它 就像删除时间戳超过一天的数据的例程一样 DROP PROCEDURE IF EXISTS delete rows links GO CREATE PROCEDURE delete row
  • 如何用零替换交叉表查询中的空值?

    基于 Access 中的以下 SQL TRANSFORM Sum Shape Length 5280 AS MILES SELECT ONSHORE AS Type Sum qry CurYrTrans Miles AS Total Of
  • Android 的 SceneKit 等效项是什么? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我创建了一个ARKit https developer apple com augmented rea
  • 有没有办法在 R Markdown 中的嵌入式 LaTeX 方程中使用 r 代码的结果

    有没有类似的命令 Sexpr可以在 R Markdown 文档中的嵌入式 LaTeX 方程中使用吗 我想用这样的东西形成一个简单的线性回归方程 hat Y Sexpr coef model 1 Sexpr coef model 2 cdot
  • 从android中的SeekBar获取值

    我如何从 a 获取值SeekBar 我有一个具有三个 SeekBar 的类的代码 PRICEbar 我想将这些 SeekBars 的值传递给下一个 Activity 屏幕 作为意图 我知道如何实现 OnClickListener 但如何提取
  • Django:DetailView从外键获取对象

    我的模型事件有一个基于类的 DetailView 并且想要显示通过外键相关的类别条目 模型 py class Event models Model name models CharField max length 50 def get ab
  • Subversion 中的 Mercurial:移动、重命名和标签

    我有一个具有以下布局的 subversion 存储库 svnrepo projectA trunk svnrepo projectA tags svnrepo projectA branches svnrepo projectB trunk
  • 如果显式使用同一模块中的类型,则 Prism 框架不会加载模块

    我们有一个使用 prism 5 框架的 WPF 应用程序 使用 DirectoryModuleCatalog 加载模块 同时 如果我引用引导程序所在的启动项目中的模块之一并使用其中的类型 则该模块将被跳过加载 看起来 prism 框架正在跳
  • 关于 Z3 for Java 的性能问题

    我在当前使用 Z3 for Java 的项目中遇到了一些性能问题 基本上我当前的大多数限制都非常简单 例如 f x 2 f y lt 3 f x lt 5 我正在使用整个项目共享的静态上下文和解算器实例 public class Const
  • 如何从服务器发送数据到Android?

    我正在开发一个项目 我希望我的服务器向我的应用程序发送一些数据 无需从移动设备调用 Web 服务 它就像一个网络面板 可以操作移动应用程序来添加数据 因此 当用户在网站中添加数据并单击 添加 时 应该将该数据添加到移动应用程序 如果移动设备
  • QEMU、无可启动设备、Linux 的 Windows 子系统

    我正在学习如何构建基本的操作系统内核https intermezzos github io https intermezzos github io 我已经创建了我的 iso文件 我现在正在运行qemu system x86 64 cdrom
  • 如何在“共享”(git 管理)Xcode 项目中使用“私有”.xcconfig?

    通常 我会使用现有的 xcconfig在某些子模块中 以简化 Xcode 工作区 或项目 中某些 git 子模块 或我自己的 Xcode 子项目 之一 的集成 这非常有效 并且减少了对可能存在的项目进行大量本地配置更改的需要在其自己的 或者
  • 将扁平化的键->值对转换为嵌套对象

    将以下键 gt 值对象 数组 转换为正确的 JSON 样式对象的最简单方法是什么 下面的示例将输入转换为图表 var input graph default seriesColor cccccc 3c3c3c graph default s