Angular2-如何将Rails json错误响应分解为字符串

Angular2-如何将Rails json错误响应分解为字符串,json,angular,dictionary,rails-api,Json,Angular,Dictionary,Rails Api,来自Rails API的错误响应提供了以下json主体: {“移动”:[“已被占用”],“电子邮件”:[“已被占用”]} 如您所见,每个字段都可以有一个与之关联的错误消息数组 我试图将其“解构”成一个简单的字符串: 手机已被占用,电子邮件已被占用 我试图使用map并为它提供一个函数。显然,我需要考虑这样一个事实,即这些数组中可能有几个元素,例如: {“手机”:[“已拍摄”,“英国必须从07开始],“电子邮件”:[“已拍摄”]} 然后应该变成: “手机已被占用,英国手机必须启动07,电子邮件已被占

来自Rails API的错误响应提供了以下json主体:

{“移动”:[“已被占用”],“电子邮件”:[“已被占用”]}

如您所见,每个字段都可以有一个与之关联的错误消息数组

我试图将其“解构”成一个简单的字符串:

手机已被占用,电子邮件已被占用

我试图使用map并为它提供一个函数。显然,我需要考虑这样一个事实,即这些数组中可能有几个元素,例如:

{“手机”:[“已拍摄”,“英国必须从07开始],“电子邮件”:[“已拍摄”]}

然后应该变成:


“手机已被占用,英国手机必须启动07,电子邮件已被占用”

可以这样做:

let a = JSON.parse('{"mobile":["is already taken","must start 07 for UK"],"email":["is already taken"]}');
let message = Object.keys(a).reduce((prev, next) => prev.concat(a[next].map(v => next + ' ' + v).join(', ')), []).join(', ');

可以这样做:

let a = JSON.parse('{"mobile":["is already taken","must start 07 for UK"],"email":["is already taken"]}');
let message = Object.keys(a).reduce((prev, next) => prev.concat(a[next].map(v => next + ' ' + v).join(', ')), []).join(', ');

没有任何实际的努力,或者至少没有提供代码,感觉就像在做别人的家庭作业。另一方面,这些都是我喜欢的有趣的事情。不需要地图什么的。只是简单的打字脚本:

let errorMessages: string[] = [];

let json: string = {"mobile":["is already taken","must start 07 for UK"],"email":["is already taken"]};

let keys: string[] = Object.keys(json);

for(let key of keys) {
   for(let msg of json[key]) {
       errorMessages.push(key + ' ' + msg);
   }
}

console.log(errorMessages.join(', '));

没有任何实际的努力,或者至少没有提供代码,感觉就像在做别人的家庭作业。另一方面,这些都是我喜欢的有趣的事情。不需要地图什么的。只是简单的打字脚本:

let errorMessages: string[] = [];

let json: string = {"mobile":["is already taken","must start 07 for UK"],"email":["is already taken"]};

let keys: string[] = Object.keys(json);

for(let key of keys) {
   for(let msg of json[key]) {
       errorMessages.push(key + ' ' + msg);
   }
}

console.log(errorMessages.join(', '));

你有你已经尝试过的代码的例子吗?我尝试过的代码太糟糕了,我把它扔掉了。我不熟悉使用map。你有没有你已经尝试过的代码的例子?我尝试过的代码太糟糕了,我把它扔掉了。我对使用map还不熟悉。谢谢,但我正在努力掌握函数式编程的诀窍,避免使用循环。即使使用for循环,至少您也比我做得更远。:)这其实很聪明,谢谢你,我从尝试你的解决方案中学到了很多。在哪里划界。我个人喜欢简单的代码而不是链式编码。就像上面提到的,它使阅读、调试和维护变得更容易。很明显,像这样一个小例子,没有什么大区别。我猜这取决于你的代码风格。尽管我对reduce/map非常熟悉,但我花了一段时间才弄清楚这里到底发生了什么:)谢谢,但我正在努力掌握函数编程的诀窍,避免使用循环。即使使用for循环,至少您也比我做得更远。:)这其实很聪明,谢谢你,我从尝试你的解决方案中学到了很多。在哪里划界。我个人喜欢简单的代码而不是链式编码。就像上面提到的,它使阅读、调试和维护变得更容易。很明显,像这样一个小例子,没有什么大区别。我猜这取决于你的代码风格。尽管我对reduce/map非常熟悉,但我还是花了一段时间才弄清楚这里到底发生了什么:)谢谢你的快速回答。虽然我正在努力学习FP,但这(作为一个noob)与PierreDuc的答案相比似乎相当复杂。在我看来,维持他的解决方案要容易得多。。。当代码如此不可读时,有点让我偏离了FP方式……但可能这只是缺乏经验。90%的代码是标准的
Array
方法,新的胖箭头函数允许更少的冗长语法。我想我只需要用map和reduce进行更多练习……更多,哈哈。谢谢你的快速回答。虽然我正在努力学习FP,但这(作为一个noob)与PierreDuc的答案相比似乎相当复杂。在我看来,维持他的解决方案要容易得多。。。当代码如此不可读时,有点让我偏离了FP方式……但可能这只是缺少经验。90%的代码是标准的
Array
方法,新的胖箭头函数允许更少的冗长语法。我想我必须更多地练习map和reduce……更多,哈哈。