如何将响应转换为完整的json格式

时间:2017-05-03 21:10:00

标签: node.js

我有下一个回复:

{
  "Status": 200,
  "Email": "aristos@gmail.com",
  "Values": "[\"{\\\"name\\\":\\\"John\\\",\\\"age\\\":30,\\\"ids\\\":[ \\\"123445\\\", \\\"2345456\\\", \\\"42346\\\" ]}\"]"
}

我想解决这个问题:

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

所以它看起来更像这样:

{ Status: 200,
  Email: 'aristos@gmail.com',
  Values:  '{"name":"John","age":30,"ids":[ "123445", "2345456", "42346" ]}'  }

我正在使用节点js。

    var result={Status: 200,
        Email: req.body.email,
      Values: req.body.values};

请求是:

email:aristos@gmail.com
values:{"name":"John","age":30,"ids":[ "123445", "2345456", "42346" ]}

电话后

此致

2 个答案:

答案 0 :(得分:1)

不确定为什么你的数据被包装成数组并进行字符串化,但这是另一个故事。

因此,您需要解析json字符串,并获取第一个数组元素。像这样:

const response = {
  "Status": 200,
  "Email": "aristos@gmail.com",
  "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

答案 1 :(得分:1)

如果您需要使用req.body.values,最好使用JSON.parse()方法,如下所示:

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

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

var result={Status: 200,
            Email: "email@example.com",
            Values: val};      
const response = JSON.stringify(result);

请看一下jsfiddle