You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core中如何通过JObject向Lambda传递string[]参数

问题:如何通过JObject向Lambda传递string[]参数?

我需要将string[]类型的externalRateCardIds传入Lambda调用,但调用接口时提示未发送输入。当前代码如下:

JArray array = new JArray();
array.Add(externalRateCardIds);

JObject queryParam = new JObject();
queryParam.Add("externalRateCardIds", array);

var externalRateCardLambdaResponse = 
await _lambdaInvoker.InvokeLambdaWithResponseAsync(
    EnvironmentVariables.ApiLambdaLongName,
    $"/api/Bill/GetBillByExternalID",
    "get", 
    new JObject(), 
    queryParam);

解决方案

你当前代码的问题在于:直接把整个string[]对象作为单个元素添加到JArray中,生成的JSON是嵌套数组结构(比如[[ "id1", "id2" ]]),但Lambda接口期望的是扁平的字符串数组([ "id1", "id2" ]),导致接口无法识别有效输入。

可以通过两种方式修正:

方式一:遍历数组逐个添加元素

JArray array = new JArray();
foreach (var id in externalRateCardIds)
{
    array.Add(id);
}

JObject queryParam = new JObject();
queryParam.Add("externalRateCardIds", array);

var externalRateCardLambdaResponse = 
await _lambdaInvoker.InvokeLambdaWithResponseAsync(
    EnvironmentVariables.ApiLambdaLongName,
    $"/api/Bill/GetBillByExternalID",
    "get", 
    new JObject(), 
    queryParam);

方式二:用JArray.FromObject直接转换

这种方式更简洁,自动将string[]转换为对应结构的JArray:

JArray array = JArray.FromObject(externalRateCardIds);

JObject queryParam = new JObject();
queryParam.Add("externalRateCardIds", array);

var externalRateCardLambdaResponse = 
await _lambdaInvoker.InvokeLambdaWithResponseAsync(
    EnvironmentVariables.ApiLambdaLongName,
    $"/api/Bill/GetBillByExternalID",
    "get", 
    new JObject(), 
    queryParam);

额外注意:如果是GET请求,部分框架对URL数组参数的格式有特定要求(比如externalRateCardIds=id1&externalRateCardIds=id2或externalRateCardIds[]=id1&externalRateCardIds[]=id2),如果上述JSON方式仍不生效,可检查_lambdaInvoker是否能将queryParam的数组正确转换为符合要求的查询字符串,必要时手动拼接参数。


内容的提问来源于stack exchange,提问作者karthikeyan sivakumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 05:45:44