【问题标题】:get field and value from json using javascript使用javascript从json获取字段和值
【发布时间】:2020-01-30 03:22:44
【问题描述】:

现在我的json是这样的

{
"1": "a",
"2": "b",
"3": "c",
}

由此,我将获得这样的价值

[
{
 "id": 1,
"value": "a"
},
{
 "id": 2,
"value": "b"
},
{
 "id": 3,
"value": "c"
},
]

我尝试使用 JSON.parse(),但出现意外的令牌错误。 我该怎么做?

【问题讨论】:

标签: javascript json


【解决方案1】:
var data = '{ "1": "a", "2": "b", "3": "c"}';

var parsedData = JSON.parse(data);

var arr = [];

for(item in parsedData) {
    arr.push({
        "id": parseInt(item),
        "value": parsedData[item]
    });
};

console.log(arr);

在这里我们可以创建一个随机 JSON 对象,如果您注意到,最后一个值没有尾随逗号。在 JSON 中,不能有尾随逗号,否则会出错。您也不必在 JSON 中将数字放在双引号中。我不确定这是否就是您的数据格式,但您不需要这样做。去掉尾随逗号后,您应该能够调用 JSON.parse() 并将数据存储在 JavaScript 对象中。之后,我们可以遍历有效对象并将值推送到数组中。由于您在 JSON 对象中的数字周围有双引号,因此我将它们解析为整数,这就是您在最终输出中尝试实现的效果。我还要强调您的数据不是 JSON,但它看起来就像一个 JSON 对象。我们不知道您是从 JSON 文件中获取此数据,还是手动添加它,但如果您手动添加它,则需要像上面那样将其设为有效的 JSON 字符串。

【讨论】:

    【解决方案2】:

    我猜问题是最后一个逗号:

    {
      "1": "a",
      "2": "b",
      "3": "c",//<===
    }
    

    JSON 不允许尾随逗号。

    【讨论】:

      【解决方案3】:
      let a =
      {
          "1": "a",
          "2": "b",
          "3": "c",
      }
      console.log(typeof a)
      

      当我打印 JSON 对象的类型时,它显示“对象”。

      JSON.parse() 仅用于字符串类型。

      我尝试了以下代码。

      let a = '{"1": "a", "2": "b", "3": "c"}'
      let b = JSON.parse(a)
      console.log(JSON.stringify(b))
      

      解析没问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-20
        • 1970-01-01
        • 2017-11-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多