转换Java字符串数组或JSON字符串到Javascript数组(Parse.com Cloud Code和Mandri
Convert Java string array or JSON string to Javascript Array (Parse.com Cloud Code and Mandrill)
我试图在Javascript中创建一个数组(对于我的Parse.com云代码),这将使我能够从字符串数组中配对每个字符串,我从java应用程序传递到一个名为"email"的键。这样,我就可以将Mandrill的message-to-send的'to'属性设置为多封邮件。
函数var recipientJavaArray = request.params.toEmail.split(",");
的第一行是我的尝试转换在Java JSON字符串(从Java字符串数组格式化)传入字符串的Javascript数组。
之后的for循环是我试图创建一个新的二维数组,其中它们本质上是键值对:"email"=>"sample@gmail.com"
我在这个转换过程中做错了什么,它似乎不工作?控制台日志仍然将其报告为成功发送了要发送到Mandrill服务器的电子邮件:
[2014-07-10 t06:34:40 .618] v8:运行云函数sendEmail with:输入:{"fromEmail":"k * * * * * @gmail.com"、"toEmail":"['"k * * * * * @gmail.com '",'" ***********@ gmail.com ']","文本":"示例测试文本"、"fromName":"示例测试名称"、"toName":"样品收件人名称","主题":"测试5"}结果:邮件发送!
这是传入JSON字符串的Java代码,以及我如何将字符串数组转换为JSON字符串。也许我在这里做错了什么?
Gson converter = new Gson();
String recipientsInJson = converter.toJson(recipients);
params.put("toEmail", recipientsInJson);
完整的Javascript函数如下:
Parse.Cloud.define("sendEmail", function(request, response) {
var recipientJavaArray = request.params.toEmail.split(",");
var recipientArray = new Array();
for (var i = 0; i < recipientJavaArray.length; i++) {
var oneRecipient = new Array();
oneRecipient["email"] = recipientJavaArray[i];
recipientArray.push(oneRecipient);
}
var Mandrill = require('mandrill');
Mandrill.initialize('1C7****************OQ');
Mandrill.sendEmail({
message: {
text: request.params.text,
subject: request.params.subject,
from_email: request.params.fromEmail,
from_name: request.params.fromName,
/*THIS is what I am trying to get to work. It is an array struct.*/
to: recipientArray
},
async: true
},{
success: function(httpResponse) {
console.log(httpResponse);
response.success("Email sent!");
},
error: function(httpResponse) {
console.error(httpResponse);
response.error("Uh oh, something went wrong");
}
}); });
关于Mandrill中'to'参数是什么以及它是由什么组成的文档,可以在这里找到:https://mandrillapp.com/api/docs/messages.html
也许有更好的方法来做到这一点比我目前正在尝试做的方式?就像在Java中用"email"键在数组(或HashMap?)中匹配电子邮件字符串并将其带到Javascript中并将其转换回标准Javascript数组一样?这可能吗?如果有,我该怎么做?
我终于自己弄明白了。事实证明,传入的JSON字符串需要通过JSON解析才能正确地将其格式化为Javascript数组。我是这样做的:
var recipientJavaArray = request.params.toEmail;
var recipientArray = JSON.parse(recipientJavaArray);
然后我在试图创建一个二维数组键->值结构是错误的。我发现Javascript中的数组不支持键-这是Javascript中的对象。因此,我更改了for循环,以创建要存储在Array中的接收对象,而不是Array中的数组。
var recipients = [];
for (var i = 0; i < recipientArray.length; i++) {
var recipientObject = {};
recipientObject["email"] = recipientArray[i];
recipients.push(recipientObject);
}
我希望这能帮助到有类似问题的人。以下是完整、正确的函数,以供今后参考和方便使用:
Parse.Cloud.define("sendEmail", function(request, response) {
var recipientJavaArray = request.params.toEmail;
var recipientArray = JSON.parse(recipientJavaArray);
var recipients = [];
for (var i = 0; i < recipientArray.length; i++) {
var recipientObject = {};
recipientObject["email"] = recipientArray[i];
recipients.push(recipientObject);
}
var Mandrill = require('mandrill');
Mandrill.initialize('1C7****************fOQ');
Mandrill.sendEmail({
message: {
text: request.params.text,
subject: request.params.subject,
from_email: request.params.fromEmail,
from_name: request.params.fromName,
to: recipients
},
async: true
},{
success: function(httpResponse) {
console.log(httpResponse);
response.success("Email sent!");
},
error: function(httpResponse) {
console.error(httpResponse);
response.error("Uh oh, something went wrong");
}
});
});
- 将JSON转换为typescript中的字符串数组
- 在Javascript中将一个值和字符串数组转换为if语句
- 如何将正则表达式包含到字符串数组中
- JavaScript:将字符串数组转换为文本区域
- Knockout中的字符串数组
- 拆分字符串数组(JavaScript)后未定义
- 使用Javascript获取两个字符串之间的字符串数组
- 打印从Spring MVC Controller发送的字符串数组只显示“;toJSON”;在javascript中
- 将一个字符串数组解析为一个新的数组javascript
- AngularJS - 从字符串数组中连续更改文本
- 使用字符串数组中的字符填充 HTML 表
- 如何在 Javascript 中将字符串数组列表插入到表行中
- 创建二维字符串数组
- 如何从字符串数组中获取子字符串数组
- 如何将字符串数组转换为简单数组
- 按字母顺序、数字顺序和特殊字符对字符串数组进行排序
- 如何从字符串数组中获得8个随机唯一元素
- json_encode($myVar);正在给出地图,我想要一个字符串数组
- 函数,返回javascript中两个字符串数组的差值
- Javascript字符串数组转换为用逗号分隔的多个字符串