【问题标题】:JavaScript to JSON with Keys [duplicate]带有键的 JavaScript 到 JSON [重复]
【发布时间】:2020-01-27 11:08:58
【问题描述】:

我正在尝试将参数从我的 URL(示例 1)转换为类似于示例 2 的 JSON 对象。不幸的是,当我使用 JSON.stringify() 时,它会将其转换为示例 3。谁能指出我分裂这个的正确方向?我不知道如何取出钥匙。

示例 1 - 输入

food=apple,banana,peach&store=walmart&customer=John

示例 2 - 所需的输出

{"food": ["apple", "banana", "peach"], "store":"walmart", "customer":"John"}

示例 3 - 当前输出

{"food=apple,banana,peach", "store=walmart", "customer=John"}

编辑:

忘记食物列表中的“”

我尝试了什么

data = "food=apple,banana,peach&store=walmart&customer=John";
data = JSON.stringify(data);

【问题讨论】:

  • 您想要的输出是无效的 JSON。如果这确实是您想要的输出,那么这绝对是一个 X/Y 问题。您确定不希望将数组项作为字符串包含在"s 中吗?
  • 正如@CertainPerformance 所说,您想要的输出不是 JSON 对象。请提供正确的输出您尝试过的示例
  • 是的,我忘了把“”提交这个有点匆忙

标签: javascript json


【解决方案1】:

使用拆分,适当拆分字符串并在对象中插入值

var str = 'food=apple,banana,peach&store=walmart&customer=John';
var arr = str.split('&')
var obj = {};
for (let i = 0; i < arr.length; i++) {
var x = arr[i].split('=')
  if (i == 0) {
    obj[x[0]] = [];
    x[1].split(',').forEach(function(y) {
      obj[x[0]].push(y)
    })
  } else
    obj[x[0]] = x[1]
}
console.log(obj)

【讨论】:

猜你喜欢
  • 2021-02-25
  • 2014-09-09
  • 2015-08-30
  • 2013-09-24
  • 2015-12-13
  • 2023-03-29
  • 2017-12-06
  • 1970-01-01
  • 2021-09-04
相关资源
最近更新 更多