【问题标题】:How do I parse part of a JSON object that has mixed string and numbers?如何解析包含混合字符串和数字的 JSON 对象的一部分?
【发布时间】:2021-04-02 03:06:55
【问题描述】:

我有一个 JSON 文件,它是由处理器生成的,类似这样的行

jsonData:   "{data: [350.23,250.32,150.34,340.50,236.70,370.45,380.55]}"

我可以定位 'jsonData' 对象,但这会将双引号内的所有内容作为字符串返回。 我试过 ...dataset[0].jsonData[8] 从第一个值返回“3”。我想我可以将混合字符串放入 JS 函数中并使用正则表达式来删除多余的东西,但这可能是最老套的方法。

仅针对值的最简单方法是什么?

【问题讨论】:

  • 该字符串不是有效的 JSON。使用正确的 JSON 字符串可以正常工作:JSON.parse('{"data": [350.23,250.32,150.34,340.50,236.70,370.45,380.55]}')
  • 你不是很清楚你试图通过“定位”和“额外的东西”来完成什么。但是JSON.parse() 可能会带你到某个地方。
  • 我正在使用包含 JSON.parse() 的 axios,当我尝试检索字符串数据时 > 是我得到的。我知道处理器弄乱了 JSON,但这是我必须处理的。我可以做些什么来“定位”双精度值吗?
  • SQL Server 与此有​​什么关系?

标签: javascript arrays json sql-server database


【解决方案1】:

如果您想像列表一样与它进行交互,我会考虑类似

var list = jsonData.split("[")[1].split("]")[0].split(",")

Console.log(list);

控制台显示:

[
  '350.23', '250.32',
  '150.34', '340.50',
  '236.70', '370.45',
  '380.55'
]

从这里你可以使用 list[3] 得到 340.50

【讨论】:

    【解决方案2】:

    如果您不想花时间修复 JSON,请执行以下操作:

    let values = "{data: [350.23,250.32,150.34,340.50,236.70,370.45,380.55]}".split(',').map(_ => _.replace(/[^0-9.]/g,''))
    
    console.log(values)
    

    【讨论】:

      猜你喜欢
      • 2020-03-21
      • 1970-01-01
      • 1970-01-01
      • 2021-06-12
      • 1970-01-01
      • 2020-09-25
      • 2022-12-24
      • 1970-01-01
      • 2021-08-24
      相关资源
      最近更新 更多