G33kDude cJson - 将 Json 字符串加载到 AHK 后,如何通过 AHK 表示法访问密钥?

问题描述 投票:0回答:1

我有以下

json
文件并想将其转换为 AHK 对象:

{
    "folders": [
        {
            "path": "."
        }
    ],
    "settings": {
            "files.exclude": {
            "**/.git": true,
            "**/.svn": true,
            "**/.hg": true,
            "**/CVS": true,
            "**/.DS_Store": true,
            "**/Thumbs.db": true,
            "**.lnk":true,
            "*.code-workspace" :true,
            "**.vscode/":true,
            "**.url":true
        },
        "terminal.integrated.fontSize": 12,
    }
}

我只关心键

terminal.integrated.fontSize
及其值
12
。我想增加/减少它并通过覆盖文件将其保存回来。

我已经尝试了以下方法,我被困在获取值

terminal.integrated.fontSize
,调试器显示
Object {["files.exclude"]: Object, ["terminal.integrated.fontSize"]: 12}
OutPutDebug
只打印任何内容:

path    := "C:\temp\Rest APIs.code-workspace"
Obj     := Json.Load(FileOpen(Path,"r").Read())
OutputDebug, % Obj.settings
OutputDebug, % Obj.settings[1]
OutputDebug, % Obj.settings[2]

如果你想知道我在做什么,我在这里解释一下,如何使用热键增加“Settings.json”中设置的值?

任何帮助将不胜感激!

autohotkey
1个回答
0
投票

首先,你的JSON代码不正确。 我通常使用 THIS 网站在处理 JSON 输入之前对其进行验证。 在您的 JSON 代码中,“12”后面有一个不应该出现的逗号。

澄清这一点后,这里有一些方法可以使用您正在使用的相同库来实现您想要的目标。

j   =
    (
        {
            "folders": [{
                "path": "."
            }],
            "settings": {
                "files.exclude": {
                    "**/.git": true,
                    "**/.svn": true,
                    "**/.hg": true,
                    "**/CVS": true,
                    "**/.DS_Store": true,
                    "**/Thumbs.db": true,
                    "**.lnk": true,
                    "*.code-workspace": true,
                    "**.vscode/": true,
                    "**.url": true
                },
                "terminal.integrated.fontSize": 12
            }
        }
    )
obj := json.load(j)
    OutputDebug, % obj.settings["terminal.integrated.fontSize"]

obj.settings["terminal.integrated.fontSize"] := 15
    OutputDebug, % obj.settings["terminal.integrated.fontSize"]

obj.settings["terminal.integrated.fontSize"]++
    OutputDebug, % obj.settings["terminal.integrated.fontSize"]

new_json := json.dump(obj)
Msgbox % new_json
ExitApp, 0
© www.soinside.com 2019 - 2024. All rights reserved.