JSON字符串化重组

时间:2018-07-06 21:40:21

标签: javascript arrays json stringify

我有一个数据库,其中包含多个单元格,每个单元格下面都有值。

单元格是:id,名称,持续时间,日期和相关ID

我有此代码:

var result = {} 
properties.data.forEach(addToResult); //Get data from database using properties.data
    
instance.data.datavarb = JSON.stringify(result); //Send data after converted to JSON
      
function addToResult(pair,isjson){ //operations
if(isjson===true) result[pair.key] = JSON.parse(pair.value); else result[pair.key] = pair.value;
}

我面临2个问题:

1-第一个问题: 这是在转换为JSON后如何获取值的方法:

{"id":"1","name":"Football","duration":"12","date":"02-07-2018","relationid":null}

我的需要方式:

{id:1, name:"Football", duration:12, date:"02-07-2018", relationid:null}

需要从数字(id,duration和relationid)以及id,duration,relationid值中删除“” 引号。

2-第二个问题: 在问题1中,仅出于演示目的,我只是在解析数据库中的三个值之一。当我全部解析它们时会发生什么?看起来像这样:

{"id":"1, 2, 3","name":"Football, France, Belgium","duration":"12, 4, 3","date":"02-07-2018, 08-07-2018, 10-07-2018","relationid":", 1, 1"}

它不是一个一个地创建,而是创建相同的标识符(id,name,duration),并将所有值放在相同的位置。为了我的目的,我需要成为:

{id:1, name:"Football", duration:12, date:"02-07-2018", relationid:null},
{id:2, name:"France", duration:4, date:"08-07-2018", relationid:1},
{id:3, name:"Belgium", duration:3, date:"10-07-2018", relationid:1}

非常感谢!

1 个答案:

答案 0 :(得分:2)

您可以测试这些值是否看起来像整数,然后解析它们。

function addToResult(pair,isjson){ //operations
    if(isjson===true) {
        result[pair.key] = JSON.parse(pair.value); 
    } else if (/^\d+$/.test(pair.value)) {
        result[pair.key] = Number(pair.value);
    } else {
        result[pair.key] = pair.value;
    }
}