在Angular应用中,我从服务器收到的HTTP响应作为JSON对象出现了一些错误。我想将它们全部加入一个字符串中,并作为消息显示给用户。

目前,我已经这样做了:

if ( "errors" in emsg.error ) {
   let msg = emsg.error.map(o => o.name).join(', ');
}


但是,我需要针对每种不同的返回情况使用不同的键名来编写它。我的回应示例如下:

{
   "error":{
      "message":"422 Unprocessable Entity",
      "errors":{
         "id":[
            "The id has already been taken."
         ],
         "name":[
            "The name has already been taken."
         ]
      },
      "status_code":422
   }
}


因此,我的响应可以包含动态对象名称,并且每个对象都可能有多个错误。有什么方法可以将上面的代码转换为可以处理相同格式所有响应的通用代码?

最佳答案

获取对象键并迭代keys数组。如果键存在,则连接值



var emsg = {
   "error":{
      "message":"422 Unprocessable Entity",
      "errors":{
         "id":[
            "The id has already been taken."
         ],
         "name":[
            "The name has already been taken."
         ]
      },
      "status_code":422
   }
}
 var keys = Object.keys(emsg.error.errors);
 let msg = keys.map(o =>emsg.error.errors[o] ).join(', ');
 console.log(msg)

10-05 20:51