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

使用AWS默认C# Lambda模板测试JSON输入报反序列化错误如何解决

问题根因

你定义的Lambda处理函数FunctionHandler第一个入参为String类型,AWS Lambda默认的JSON序列化器会将传入的请求Payload直接反序列化为对应参数类型:

  • 传入"Hello World"时,Payload本身就是合法JSON字符串,可以正常反序列化为C# String类型,因此运行正常
  • 你传入的AWS Hello World示例请求是JSON对象结构(以{}包裹),序列化器无法将JSON对象直接转换为C# String类型,因此抛出反序列化错误,报错中Cannot get the value of a token type 'StartObject' as a string就是明确的指向。

解决方案

你可以根据业务需求二选一:

方案1:定义匹配JSON结构的实体类接收参数

按照你传入的JSON结构定义对应C#类,将函数入参类型改为该实体类即可。比如AWS默认Hello World请求结构为{"key1":"value1","key2":"value2","key3":"value3"},对应修改代码如下:

// 新增和JSON结构匹配的输入实体类
public class LambdaInput
{
    public string Key1 { get; set; }
    public string Key2 { get; set; }
    public string Key3 { get; set; }
}

public class Function
{
    public string FunctionHandler(LambdaInput input, ILambdaContext context)
    {
        // 按需处理输入的各个属性
        return input?.Key1?.ToUpper();
    }
}

方案2:直接读取原始JSON字符串

如果需要拿到完整的原始JSON内容自行处理,可以将入参类型改为Stream手动读取:

public class Function
{
    public string FunctionHandler(Stream input, ILambdaContext context)
    {
        using var reader = new StreamReader(input);
        // rawJson即为传入的完整原始JSON字符串
        string rawJson = reader.ReadToEnd();
        return rawJson?.ToUpper();
    }
}

内容的提问来源于stack exchange,提问作者Eric Snyder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:54:01