【问题标题】:HOw to convert following data in object in JS如何在JS中的对象中转换以下数据
【发布时间】:2020-07-03 07:50:33
【问题描述】:
"[{'id': 3, 'Name': 'ABC', 'price': [955, 1032, 998, 941, 915, 952, 899]}, {'id': 4, 'Name': 'XYZ', 'id': [ 1016, 1015, 1014, 915, 1023, 1012, 998, 907, 952, 945, 1013, 1057, 1018, 899]}]" 

我正在尝试转换上面的 python 字典列表。进入 js 中的对象,但出现错误。 JS代码如下:

var check_data;
check_data = $('#vendor_dict').val();
check_data=JSON.parse(check_data);

错误:

VM82:1 Uncaught SyntaxError: Unexpected token ' in JSON at position 2
    at JSON.parse (<anonymous>)

【问题讨论】:

    标签: javascript python jquery python-3.x javascript-objects


    【解决方案1】:

    JSON 对值的表达方式有非常严格的要求,您的问题是字符串数据根据要求使用单引号 ' 而不是双引号 "。为了使用本机 JSON.parse 实现成功解析它,您需要修复它,例如通过手动替换引号

    const data = `[{'id': 3, 'Name': 'ABC', 'price': [955, 1032, 998, 941, 915, 952, 899]}, {'id': 4, 'Name': 'XYZ', 'id': [ 1016, 1015, 1014, 915, 1023, 1012, 998, 907, 952, 945, 1013, 1057, 1018, 899]}]`
    
    console.log(JSON.parse(data.replace(/'/g, '"')))

    您也可以尝试使用 JSON5 进行解析,而不是手动替换引号,这是一个限制较少的解析器版本

    const data = `[{'id': 3, 'Name': 'ABC', 'price': [955, 1032, 998, 941, 915, 952, 899]}, {'id': 4, 'Name': 'XYZ', 'id': [ 1016, 1015, 1014, 915, 1023, 1012, 998, 907, 952, 945, 1013, 1057, 1018, 899]}]`
    
    console.log(JSON5.parse(data))
    &lt;script src="https://cdnjs.cloudflare.com/ajax/libs/json5/0.5.1/json5.min.js"&gt;&lt;/script&gt;

    我个人建议使用 JSON5,​​因为在某些极端情况下,第一种方法可能会失败。特别是对于您的数据,这两种方式似乎都没有任何问题,但是对于包含转义单引号或未转义双引号的数据,它可能会失败。例如:

    const data = `{'a': 'test "test" test'}`
    const data2 = `{'a': 'test \' test'}`
    
    try {
      JSON.parse(data.replace(/'/g, '"'))
    }
    catch (e) {
      console.error(e)
    }
    
    try {
      JSON.parse(data2.replace(/'/g, '"'))
    }
    catch (e) {
      console.error(e)
    }

    【讨论】:

      【解决方案2】:

      要在 python 中转换为 JSON,只需使用 json 库。它会生成漂亮的 JSON 对象:

      import json
      print(json.dumps([{'id': 3, 'Name': 'ABC', 'price': [955, 1032, 998, 941, 915, 952, 899]}, {'id': 4, 'Name': 'XYZ', 'id': [ 1016, 1015, 1014, 915, 1023, 1012, 998, 907, 952, 945, 1013, 1057, 1018, 899]}]))
      

      看看https://docs.python.org/3/library/json.html

      【讨论】:

        猜你喜欢
        • 2022-06-11
        • 1970-01-01
        • 2020-07-18
        • 2020-07-14
        • 2019-06-04
        • 1970-01-01
        • 2017-12-10
        • 1970-01-01
        • 2022-11-21
        相关资源
        最近更新 更多