当前位置: 首页 > 知识库问答 >
问题:

将JSON对象映射到Azure Function API请求类参数中的类

东门晨
2023-03-14

将JSON对象映射到类c#属性用例:我在Azure函数中创建API,并将参数ReservationDraftRequestDto传递到类,如下面的代码所示

[FunctionName("Function1")]公共静态异步任务运行([http trigger(authorization level。Function," get "," post ",Route = null)]ReservationDraftRequestDto ReservationDraftRequestDto,ILogger log) { }

DTO类:

API URI:http://localhost:7071/api/Function1JSON-for调用API是:{"SoftHoldIDs": 444,"AppliedUsages": [ { "SoftHoldID": 444,"UsageYearID": 4343,"DaysAppled": 0,"PointsAppled": 1 } ], "访客":[1,2]}

public class ReservationDraftRequestDto
{

    public int SoftHoldIDs { get; set; }
    public int[] Guests { get; set; }
    public AppliedUsage[] AppliedUsages { get; set; }

}


public class AppliedUsage
{
    public int SoftHoldID { get; set; }
    public int UsageYearID { get; set; }
    public int DaysApplied { get; set; }
    public int PointsApplied { get; set; }
}

问题是:当我使用上述有效负载调用API时,API类参数ReservationDraftRequestDto未映射到AppliedSages数组值。

请让我知道我需要做什么来映射API JSON有效负载到ReservationDraftRequestDto

共有1个答案

方和宜
2023-03-14

这是设计使然。绑定逻辑显式排除数组,同时反序列化 json 正文内容。您可以参考这里。

如果你想获取对象,这里有一个简单的解决方法:

[FunctionName("Function1")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequest req,
    ILogger log)
{
    var reservationDraftRequestDto = req.DeserializeModel<ReservationDraftRequestDto>();

    var data = JsonConvert.SerializeObject(reservationDraftRequestDto);
    //more logic...
    return new OkResult();
}
public static T DeserializeModel<T>(this HttpRequest request)
{
    using (var reader = new StreamReader(request.Body))
    using (var textReader = new JsonTextReader(reader))
    {
        request.Body.Seek(0, SeekOrigin.Begin);
        var serializer = JsonSerializer.Create(new JsonSerializerSettings()
        {
            ContractResolver = new CamelCasePropertyNamesContractResolver()
        });
        return serializer.Deserialize<T>(textReader);
    }
}
 类似资料:
  • 问题内容: 我正在尝试将JSON文件映射到类对象,然后根据新接收的JSON更新卡。 我的JSON结构是这样的 我的班级看起来像这样: 如何将JSON文件中的值映射到CardInfo类创建的对象的字段中? 更新资料 以下试用版在 ci.description上 打印为null ,是否表示从未创建该对象? 更新2 打印cardInfo给出以下内容: {$ class:FirstCard,id:1,说明

  • 我能够使用Json输出运行Jersey,并且能够在没有任何问题的情况下使用Json映射获得“get”请求。 我也有一些JSON方法,它们是“post”方法,它们映射到Java类,如下面的方法- 供您参考,我在这里或这里遵循指南 在给出一个有效的post请求时,它们都开始抛出下面的错误-

  • 假设我有这样的物体 我正在使用RestTemboard类从URL中获取json,如下所示: 之后,我想使用jackson对象映射器将json字符串转换为一个对象 将实体类作为第二个参数传递 问题是我应该如何编写ExampleJson实体来处理get-Showed json?我试过这样上课,但似乎不管用。 我得到了这样一个例外:

  • 问题内容: 我一直在尝试使用PC上的JSON文件将JSON数据映射到Java对象,但是它总是抛出异常: 我的数据类: 我的映射器类: json文件包含以下数据: 我究竟做错了什么?我正在使用Jackson图书馆。 问题答案: 这是我在您的代码中看到的问题列表: 该属性应放在类之上,而不是类之上。查阅文档,最值得注意的是有关“ ignoreUnknown”属性的说法,默认为false: 公共抽象布尔

  • 在使用HBase和Parquet时,我编写了从HBase获取值并将值映射到对象类的代码,但在使用Dataset复制Parquet时遇到了问题。 HBase: 我将数据从拼花地板读入数据集,但simple无法复制上述方法。 我只需要知道如何映射

  • 我使用http://jsonlint.com来验证JSON是否有效。因此,我要么需要更改JSON或代码,要么可能两者都需要。有什么想法吗?