2017-05-03 71 views
0

响应我有一个响应:如何转换到全JSON格式

{ 
    "Status": 200, 
    "Email": "[email protected]", 
    "Values": "[\"{\\\"name\\\":\\\"John\\\",\\\"age\\\":30,\\\"ids\\\":[ \\\"123445\\\", \\\"2345456\\\", \\\"42346\\\" ]}\"]" 
} 

我想解决这个问题的一部分:

"Values": "[\"{\\\"name\\\":\\\"John\\\",\\\"age\\\":30,\\\"ids\\\":[ \\\"123445\\\", \\\"2345456\\\", \\\"42346\\\" ]}\"]" 

所以它看起来像这样更好:

{ Status: 200, 
    Email: '[email protected]', 
    Values: '{"name":"John","age":30,"ids":[ "123445", "2345456", "42346" ]}' } 

我正在使用节点js。

​​

请求为:

email:[email protected] 
values:{"name":"John","age":30,"ids":[ "123445", "2345456", "42346" ]} 

后调用

问候

回答

1

如果您需要使用req.body.values是更好地使用JSON.parse()方法是这样的:

var val = JSON.parse(req.body.values); 

然后你的最终响应的字符串应该是字符串化使用JSON.stringify()方法:

var result={Status: 200, 
      Email: "[email protected]", 
      Values: val};  
const response = JSON.stringify(result); 

请看看这个jsfiddle

1

不知道为什么你的数据被包装成数组和字符串化,但这是另一个故事。

所以,你需要解析一个json字符串,并获得第一个数组元素。就像这样:

const response = { 
 
    "Status": 200, 
 
    "Email": "[email protected]", 
 
    "Values": "[\"{\\\"name\\\":\\\"John\\\",\\\"age\\\":30,\\\"ids\\\":[ \\\"123445\\\", \\\"2345456\\\", \\\"42346\\\" ]}\"]" 
 
}; 
 

 
// now it's parsed and unescaped like - {"name":"John","age":30,"ids":[ "123445", "2345456", "42346" ]} 
 
const values = JSON.parse(response.Values)[0]; 
 

 
response.Values = values; 
 

 
// From now 'response' object will be as you want