使用JavaScript将字符串转换为JSON中的整数

时间:2016-09-23 09:35:02

标签: javascript json

我有以下json

{
  "Title": "Test",
  "StartDate": {
    "Month": "3",
    "Year": "1973"
  },
  "EndDate": {
    "Month": "4",
    "Year": "1974"
  }
}

我希望来自MonthYear的{​​{1}}和StartDate值不带引号,如下所示:

EndDate

修改 我没有使用JSON.stringify()创建json。我的JSON是由Angular 2中的Form Builder模块创建的,尽管事实上我将它的类型设置为数字,在我更改值之后,该值得到引号。

4 个答案:

答案 0 :(得分:2)

在保存JSON之前,请使用parseInt()函数将值转换为整数。这将删除引号。

JSON.stringify({
    Month: parseInt( value , 10);
})

请参阅this answer

答案 1 :(得分:1)

修改

如果您之前在JavaScript代码中创建了JSON对象,请转到@Adrian Lambertz的答案。如果您从其他地方获得JSON作为String并想要转换它,请阅读我的答案:

我的原始答案

假设您在JavaScript代码中将此JSON作为字符串,您可以将所需的值转换为这样的整数:

var events = JSON.parse(JSONStringYouWantToConvert);

// if the JSON String is an array of events that all have a Title, a StartDate and an EndDate
for (var i = 0; i < events.length; i++) {
    // else, forget about the loop and the [i] index, the concept remains the same
    events[i].StartDate.Month = parseInt(events[i].StartDate.Month);
    events[i].StartDate.Year = parseInt(events[i].StartDate.Year);
    events[i].EndDate.Month = parseInt(events[i].EndDate.Month);
    events[i].EndDate.Year = parseInt(events[i].EndDate.Year);
}

// make a JSON String that wont have the quotes around the Month and Year numbers
var JSONStringConverted = JSON.stringify(events);

答案 2 :(得分:0)

只需将字符串转换为数字即可。 这段代码只是一个例子,您可以根据对象结构进行调整。

function normalize(target) {
  for (const date of ['StartDate', 'EndDate']) {
    for (const item of ['Month', 'Year']) {
      target[date][item] = Number(target[date][item]);
    }
  }
}

答案 3 :(得分:0)

我无法看到结果的数据排序顺序,所以这里有两个版本。

对象 - &gt; JSON( - &gt; Object)

这适用于JSON.stringify  以及用于为某些键创建数字的替换函数,例如MonthYear

&#13;
&#13;
var dataObj = { "Title": "Test", "StartDate": { "Month": "3", "Year": "1973" }, "EndDate": { "Month": "4", "Year": "1974" } },
    jsonStr = JSON.stringify(dataObj, function (k, v) {
        return ['Month', 'Year'].indexOf(k) !== -1 ? +v : v;
    }),
    parsed = JSON.parse(jsonStr);

console.log(jsonStr);
console.log(parsed);
&#13;
&#13;
&#13;

JSON - &gt;对象

这适用于JSON.parse  还有一个reviver函数,用于为某些键创建数字,例如MonthYear

&#13;
&#13;
var jsonStr = '{ "Title": "Test", "StartDate": { "Month": "3", "Year": "1973" }, "EndDate": { "Month": "4", "Year": "1974" } }',
    parsed = JSON.parse(jsonStr, function (k, v) {
        return ['Month', 'Year'].indexOf(k) !== -1 ? +v : v;
    });

console.log(parsed);
&#13;
&#13;
&#13;