gpt4 book ai didi

javascript - 如何将包含各种元素的 JSON 数组传递给 http 负载?

转载 作者:行者123 更新时间:2023-12-03 11:52:11 25 4
gpt4 key购买 nike

我正在尝试为 ToodleDo API v3 开发 WSO2 ESB 连接器。在该 API 中,我需要添加具有各种参数的任务数组。数组的一个元素中的参数数量可以与其他元素不同。API 调用如下所示。

http://api.toodledo.com/3/tasks/add.php
access_token=yourtoken
tasks=[{"title"%3A"My Task"}%2C{"title"%3A"Another"%2C"star"%3A"1"%2C"ref"%3A"98765"}%2C{"title"%3A""%2C"ref"%3A"1234"}]
fields=folder,star

通过创建 JSON 对象并向 API 提交 POST 来添加任务。另外,我需要在通过 URL 传输之前对数据进行编码。

我使用 javascript 尝试了此操作。我刚刚尝试在数组中使用两个参数(强制 - 标题和可选 - 星号)。我的代码如下。

    var added = 0;
var query = "";

var taskString = '{"tasks":' + mc.getProperty('uri.var.tasks') + '}';

if (mc.getProperty('uri.var.tasks') != null && mc.getProperty('uri.var.tasks') != "") {

var taskObj = eval ("(" + taskString + ")");

if(Boolean(added)) {
query = query + ',"tasks":[';
}else {
query = query + '"tasks":[';
added = 1;
}

var count = 0;
for (var i in taskObj.tasks) {
if (taskObj.tasks.hasOwnProperty(i)) {
if(count == 0 ) {
query=query + '{\"title\":\"'+mc.getProperty('uri.var.title')+'\",';
query=query + '{\"star\":\"'+mc.getProperty('uri.var.star')+'\"}';
count =1;
}else {
query=query + ',{\"title\":\"'+mc.getProperty('uri.var.title')+'\",';
query=query + '{\"star\":\"'+mc.getProperty('uri.var.star')+'\"}';
}

}
}

query = query + ']';

var encoded_query= encodeURIComponent(query);
}
mc.setProperty('uri.var.encoded_query', encoded_query);

]]>
</script>

我已经编写了如下的有效负载工厂。

<payloadFactory media-type="xml">
<format>
<xform>
<access_token>$1</access_token>
<tasks>$2</tasks>
<fields>$3</fields>
</xform>
<!--{
"access_token" : "$1",
"tasks" : "$2"
"fields" : "$3"
}-->
</format>
<args>
<arg expression="$func:access_token" />
<arg expression="get-property('uri.var.encoded_query')" />
<arg expression="$func:fields" />
</args>
</payloadFactory>

但它给了我以下错误。

[2014-09-10 22:39:22,129] ERROR - SynapseJsonPath #stringValueOf. Error evaluating JSON Path <$.access_token>. Returning empty result. Error>>> Unexpected character ({) at position 96.
[2014-09-10 22:39:22,130] ERROR - SynapseJsonPath #stringValueOf. Error evaluating JSON Path <$.tasks>. Returning empty result. Error>>> Unexpected character ({) at position 96.
[2014-09-10 22:39:22,130] ERROR - SynapseJsonPath #stringValueOf. Error evaluating JSON Path <$.fields>. Returning empty result. Error>>> Unexpected character ({) at position 96.
[2014-09-10 22:39:22,132] ERROR - ScriptMediator Failed to get the JSON payload from the input stream. Error>>>
com.google.gson.stream.MalformedJsonException: Expected name at line 1 column 101

我错过了什么?我如何修改它以使用所有可选参数?

最佳答案

您可以在字典中添加所需字段,然后对该字典调用 JSON.stringify 来获取所需的 JSON 对象。

var field = {};
field['key'] = 'value';

然后使用 Ajax 查询,您可以将数据捕获到有效负载中。

$.ajax({
type : "POST",
url : url,
data : JSON.stringify(field),
dataType : "json",
success : alert('success'),
error: alert('error')
});

关于javascript - 如何将包含各种元素的 JSON 数组传递给 http 负载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25777879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com