javascript - JSON stringify 重构
问题描述
我有一个数据库,有多个单元格,每个单元格下都有值。
单元格是:id、name、duration、date 和 relationid
我有这个代码:
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;
}
我面临两个问题:
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}
非常感谢!!
解决方案
您可以测试这些值是否看起来像整数,并对其进行解析。
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;
}
}
推荐阅读
- linux - 当我使用 [Cntrl + \] 退出正在运行的命令时,我在哪里可以找到 Linux 中的核心转储文件?
- android - 如何将 EditText 滚动到布局的最顶部?
- javascript - 如何结合execute_scipt和WebdriverWait
- c# - CosmosDB nuget 包不可用
- javascript - 我可以在智能手机的浏览器上播放音频()吗?
- vue.js - 向 v-card 中的 Vuetify 按钮添加路由?
- matlab - Matlab cart2pol函数
- sudo - systemctl 无法启动。“Sudo systemctl start apasn”我不明白错误
- ios - 使用 Swift 的计时器只能倒计时 20 秒,而不是 20 分钟
- java - 用户的 OAuth2 令牌到 RestTemplate