将所有整数值转换为JSON中的字符串

时间:2011-09-12 14:39:09

标签: java json

我的JSON字符串是:

{name:"MyNode", width:200, height:100}

我想将其更改为:

{name:"MyNode", width:"200", height:"100"}

以便所有整数值都成为字符串


我的主要代码是:

{
     "firstName": "John",
     "lastName": "Smith",
     "age": 25,
     "address":
     {
         "streetAddress": "21 2nd Street",
         "city": "New York",
         "state": "NY",
         "xy": 10021
     },
     "IDNumber":
     [
         {
           "type": "home",
           "number": 1234
         },
         {
           "type": "fax",
           "number": 4567
         }
     ]
 }

我需要所有整数值成为字符串

3 个答案:

答案 0 :(得分:6)

这是一个JavaScript对象文字,而不是JSON。总之...

var obj = {name:"MyNode", width:200, height:100};

for (var k in obj)
{
    if (obj.hasOwnProperty(k))
    {
        obj[k] = String(obj[k]);
    }
}

// obj = {name:"MyNode", width: "200", height: "100"}

如果您实际使用的是JSON,而不是对象,事先JSON.parse()字符串,之后是JSON.stringify()对象。

答案 1 :(得分:5)

如果必须对JSON字符串进行操作:

json = json.replace (/:(\d+)([,\}])/g, ':"$1"$2');

答案 2 :(得分:0)

我用

const stringifyNumbers = obj => {                                                                                      
  const result = {};                                                                                                   
  Object.entries(obj).map(entry => {                                                                                   
    const type = typeof entry[1];                                                                                      
    if (Array.isArray(entry[1])) {                                                                                     
      result[entry[0]] = entry[1].map(entry => stringifyNumbers(entry));                                               
    } else if (type === 'object' && !!entry[1]) {                                                                      
      result[entry[0]] = stringifyNumbers(entry[1]);                                                                   
    } else if (entry[1] === null) {                                                                                    
      result[entry[0]] = null;                                                                                         
    } else if (type === 'number') {                                                                                    
      result[entry[0]] = String(entry[1]);                                                                             
    } else {                                                                                                           
      result[entry[0]] = entry[1];                                                                                     
    }                                                                                                                  
  });                                                                                                                  
  return result;                                                                                                       
}   
我认为

大多数ID应该是字符串。如果您的api无法提供ID作为字符串,则此代码段会将其转换。