如何将字符串数据转换为json格式数据

问题描述 投票:0回答:4

我从服务器收到以下格式的响应:

[{"key":"Idle Time","values":[{"x":"SADSA","y":"4.0"},{"x":"FDDG","y":"6.0"},{"x":"FF","y":"4.15"}]},{"key":"Operational Time","values":[{"x":"SADSA","y":"20.0"},{"x":"FDDG","y":"18.0"},{"x":"FF","y":"19.45"}]}]

我需要将其转换为json格式,所以我使用了

JSON.parse
。这就是我得到的:

[{key:"Idle Time",values:[{x:"SADSA",y:"4.0"},{x:"FDDG",y:"6.0"},{x:"FF",y:"4.15"}]},{key:"Operational Time",values:[{x:"SADSA",y:"20.0"},{x:"FDDG",y:"18.0"},{x:"FF",y:"19.45"}]}]

但我想要以下格式:

[{key:"Idle Time",values:[{x:"SADSA",y:4.0},{x:"FDDG",y:6.0},{x:"FF",y:4.15}]},{key:"Operational Time",values:[{x:"SADSA",y:20.0},{x:"FDDG",y:18.0},{x:"FF",y:19.45}]}]

我怎样才能得到它?

javascript jquery json
4个回答
2
投票

您可以使用

reviver
JSON.parse
函数并将数值转换为数字。

使用reviver参数

如果指定了

reviver
,则通过解析计算出的值在返回之前会进行transformed。具体来说,计算值及其所有属性(从最嵌套的属性开始,一直到原始值本身)都单独通过
reviver
运行。然后调用它,其中包含被处理属性的对象为
this
,属性名称为字符串,属性值作为参数。如果
reviver
函数返回
undefined
(或不返回任何值,例如,如果执行落在函数末尾),则从对象中删除该属性。否则,该属性将被重新定义为返回值。

如果

reviver
只转换某些值而不转换其他值,请务必按原样返回所有未转换的值,否则它们将从结果对象中删除。

var json = '[{"key":"Idle Time","values":[{"x":"SADSA","y":"4.0"},{"x":"FDDG","y":"6.0"},{"x":"FF","y":"4.15"}]},{"key":"Operational Time","values":[{"x":"SADSA","y":"20.0"},{"x":"FDDG","y":"18.0"},{"x":"FF","y":"19.45"}]}]',
    data = JSON.parse(json, (key, value) => !isNaN(value) ? +value : value);
    
console.log(data);
.as-console-wrapper { max-height: 100% !important; top: 0; }


1
投票

以下代码也可以为您工作:

var strJson = '[{"key":"Idle Time","values":[{"x":"SADSA","y":"4.0"},{"x":"FDDG","y":"6.0"},{"x":"FF","y":"4.15"}]},{"key":"Operational Time","values":[{"x":"SADSA","y":"20.0"},{"x":"FDDG","y":"18.0"},{"x":"FF","y":"19.45"}]}]';
var parsedJSON = JSON.parse(strJson); 
var res = [];
parsedJSON.forEach((obj) => {
  obj.values.forEach((innerObj) => {
    innerObj.y = parseFloat(innerObj.y);
  });
  res.push(obj);
});
console.log(res);


1
投票
function convertToNo(a){
    for (var i in a){
        if (!isNaN(a[i])) a[i] = parseFloat(a[i]);
        if (a[i].isArray()) return convertToNo(a[i]);
    }
}
var newObj = convertToNo(oldObj);

这会循环遍历数组并将所有字符串更改为数字。


-2
投票

要将 JSON 字符串转换为 JavaScript 对象,可以使用 JSON.parse() 方法:

const jsonString = '{"key":"value"}';
const jsonObject = JSON.parse(jsonString);
If your JSON string contains numeric values as strings and you want them as numbers, you can use a reviver function with JSON.parse():
const jsonString = '{"numberAsString": "123"}';
const jsonObject = JSON.parse(jsonString, (key, value) =>
  typeof value === 'string' && !isNaN(value) ? Number(value) : value
);

此方法可确保数字字符串转换为实际数字。

要验证和格式化 JSON 数据,请考虑使用 https://toolsfor human.com/tools/coding/json/json-formatter.html 上的 JSON 格式化程序和验证器。该工具有助于识别错误并美化 JSON 以提高可读性。

© www.soinside.com 2019 - 2024. All rights reserved.