【问题标题】:Remove quotes from imported JSON从导入的 JSON 中删除引号
【发布时间】:2021-07-25 18:56:42
【问题描述】:

我正在使用执行此操作的 python 脚本导出一些数据:

data = {......., 'noTick': 'true'}
with open('items.json', 'w') as sample:
    sample.write(json.dumps(data))

我试图以这种方式在 vue 应用程序中导入 (src/data/items.json):

export default [
    {
        "PropertyOne": "ValueOne",
        .....,
        "noTick": "true"
    },

    {
        ......
    }
]

然后在我的 component.vue 中导入它:

import ALL_ITEMS from 'src/data/items.json'
...
const codes = ALL_ITEMS

问题是 quasar 框架中的 q-tree 组件期望 noTick 属性不被引用:

{
    "PropertyOne": "ValueOne",
    .....,
    noTick: true
}

到目前为止,我只想出了:

  1. 在 vscode 中进行查找/替换。

  2. 转换为字符串并返回 JSON:

    export default JSON.stringify(
        {
            "PropertyOne": "ValueOne",
            .....,
            "noTick": "true"
        }
    )

Component.vue:

import ALL_ITEMS from 'src/data/items.json'
...
const codes = JSON.parse(ALL_ITEMS)

这也失败了。有没有办法通过使用 JavaScript 将此属性更改为不带引号的属性?

注意:为了更清楚,我已经编辑了问题

【问题讨论】:

  • 真的有 JSON 参与吗?
  • @ÁlvaroGonzález items.json 来自 python 脚本:[ { "PropertyOne": "ValueOne", ....., "noTick": "true" }, { ...... } ]
  • 您不取消引用键,而是取消引用值。如果它是有效的原始类型,即布尔值,则它是有效的 JSON。
  • items.json,尽管有扩展名,但会导出一个 JavaScript 数组(不要与 JSON 混淆,后者是一种文本序列化格式)。在 JSON 中,未加引号的对象键是无效的。在 JavaScript 对象文字中,它 100% 等效于带引号的键(只要它不包含特殊字符,在这种情况下它也是无效的)。我的印象是这个引用/未引用的东西是一个红鲱鱼。

标签: javascript python json vue.js quasar-framework


【解决方案1】:

简单地取消引用,JSON 可以表示原始类型(字符串、数字、布尔值和 null)和两种结构化类型(对象和数组)。

    export default [
        {
            "PropertyOne": "ValueOne",
            .....,
            "noTick": true
        },
    
        {
            ......
        }
    ]

编辑:在您的 python 脚本中您应该这样做:

data = {......., 'noTick': True}
with open('items.json', 'w') as sample:
     sample.write(json.dumps(data))

【讨论】:

  • 你好。你的回答真的帮助了我。请编辑它以反映我对问题所做的更改,我可以接受它
  • @VictorMHerasmePerez 为什么要编辑它,答案仍然有效?
  • 我通过将python脚本更改为导出来解决了这个问题:"noTick": True,所以基本上取消勾选并更改为布尔值而不是字符串解决了问题
【解决方案2】:

如果您要导入 .json 文件,则不需要 导出默认值

您可以将其删除并仅使用带有 {} 的简单 .json

或者您可以将文件重命名为 .js(简单的 javascript 文件),保留导出默认值

例如:

export default {
    name: 'John Doe',
}

【讨论】:

    猜你喜欢
    • 2014-06-16
    • 2012-09-03
    • 2020-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    • 2014-09-20
    • 1970-01-01
    相关资源
    最近更新 更多