要在aspnetcore中发布到webapi的json数据的自定义字段名

时间:2017-04-11 10:22:28

标签: c# json asp.net-core asp.net-core-webapi mailjet

我正在尝试使用aspnetcore将JSON对象发送到webapi。这似乎是一项简单的任务。但是,JSON数据的字段名包括短划线( - ),例如{ Mj-TemplateID : 1}。由于Newtonsoft.Json不适用于.netcore,因此我无法使用JsonProperty更改json字段名,如下所示。

public class SendData {
   [JsonProperty("Mj-TemplateID")]
   public string TemplateId { get; set; }
}

如何在发送json数据时指定要使用的其他名称?

我必须发送这样的东西

curl -s \
-X POST \
--user "$MJ_APIKEY_PUBLIC:$MJ_APIKEY_PRIVATE" \
https://api.mailjet.com/v3/send \
-H 'Content-Type: application/json' \
-d '{
    "FromEmail":"pilot@mailjet.com",
    "FromName":"Mailjet Pilot",
    "Subject":"Your email flight plan!",
    "MJ-TemplateID":"1",
    "MJ-TemplateLanguage":true,
    "Recipients":[
            {
                    "Email": "passenger@mailjet.com"
            }
    ]
}'

2 个答案:

答案 0 :(得分:1)

Newtonsoft.json与asp.net核心兼容,请阅读:https://github.com/JamesNK/Newtonsoft.Json/issues/977

如果您按照该票证和以下票证,您可以看到它的进度。 一个合理的解决方法是检查nuget中的“预发布”按钮。

答案 1 :(得分:1)

您已经在项目中依赖using Newtonsoft.Json; nuget。 只是尝试添加

JsonProperty

Microsoft.AspNetCore属性可供您使用。

为什么你已经拥有它?您的项目包含对Microsoft.Extensions.Configuration.Json nuget package的引用,其Newtonsoft.json package作为依赖项,而后者又使用{{1}}。因此,在包恢复之后,所有这些包都可供您使用。