【问题标题】:How to create complex JSON config maps in q?如何在 q 中创建复杂的 JSON 配置映射?
【发布时间】:2018-11-08 18:59:32
【问题描述】:

在 q 中是否有一种好方法可以输入表示/将转换为 json 的大型复杂嵌套字典?我正在尝试控制 echarts javascript 库,它基本上只是根据 json 配置选项呈现图表。我现在做的是:

opt.title.text:"my chart"
opt.xAxis.data:til 100
opt.series.data:100?5
opt.series.type:`line
toClient[opt] /serializes and sends to browser

但是有没有一种明显的方法可以摆脱中间分配?制作一个函数来获取键路径/值对并将它们转换为字典是可行的方法还是有更好的方法来解决这个问题?

或者这是否应该在 q 中避免,而只是手动设置 write q 来设置特定选项并在 javascript 客户端中处理 json 对象映射?

【问题讨论】:

    标签: json kdb


    【解决方案1】:

    不确定这是否真的是您要查找的内容,但如果您需要的话,您可以直接创建嵌套字典结构吗?

    q)`title`xAxis`series!(enlist[`text]!enlist"my chart";enlist[`data]!enlist til 100;`data`type!(100?5;`line))
    title | (,`text)!,"my chart"
    xAxis | (,`data)!,0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ..
    series| `data`type!(0 1 1 3 3 3 2 2 4 1 3 3 1 4 0 4 4 4 2 4 3 3 4 0 4 0 0 1 0..
    

    【讨论】:

    • 我知道这是可能的,但如果我希望能够从 q 提示灵活地控制和调整图表,这似乎并不容易读/写。我更想知道是否有替代方法或习语来结束这些嵌套映射,或者程序的这一部分是否最好保留在 javascript 端。
    • 我目前的想法是编写一个函数,该函数接受一个连续的“keypath”列表,后跟值对,如nestmap[(`title`text;"my chart";`xAxis`data;til 100;`series`data;100?5;`series`data`type;`line)],然后将其扩展为嵌套字典。但这有点牵涉,我不确定这是否“不像 Q”,我是否应该以不同的方式思考这个问题
    • 您将不得不制作一些辅助函数(如您提到的那个),以使其对用户更具可读性和易用性。如果您想修改或访问嵌套字典的某些部分,请检查“应用”运算符,这很简单。此外,如果这在 Q 中不是必需的并且可以移动到 javascript,那么也要检查该选项,因为 javascript 有几个用于 Json 处理的库,这可能比 Q 更简单。
    猜你喜欢
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-04
    • 2018-10-27
    相关资源
    最近更新 更多