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

使用NewtonJson时ShopifySharp的Order部分属性映射失败问题

ShopifySharp Order实体类属性映射失败问题

使用ShopifySharp库的Order实体类映射Shopify订单JSON数据时,仅Id属性映射正常,AdminGraphQLAPIId、AppId等属性始终无法映射成功,相关代码及信息如下:

实体类代码

public class Order
{
        [JsonProperty("id")]
        public long? Id { get; set; }

        [JsonProperty("admin_graphql_api_id")]
        public string AdminGraphQLAPIId { get; set; }
        [JsonProperty("app_id")]
        public long? AppId { get; set; }
}

JSON示例数据

{
    "id": 4538882687054,
    "admin_graphql_api_id": "gid://shopify/Order/4538882687054",
    "app_id": 1354745
}

控制器代码

[Route("api/[controller]")]
[ApiController]
public class OrderController : ControllerBase
{
  [HttpPost]
  [Route("Order")]
  public IActionResult Order(Order order)
  {
    return Ok(order);
  }
}

问题原因

ASP.NET Core默认使用System.Text.Json进行序列化/反序列化,但ShopifySharp实体类中使用的是Newtonsoft.Json的[JsonProperty]特性,System.Text.Json并不识别该特性,导致除了名称完全匹配的Id外,其他带下划线的属性无法映射。

解决办法

办法1:为实体类添加System.Text.Json特性

修改Order实体类,同时保留原有的[JsonProperty](兼容ShopifySharp),新增[JsonPropertyName]特性(适配ASP.NET Core默认序列化器):

public class Order
{
        [JsonProperty("id")]
        [JsonPropertyName("id")]
        public long? Id { get; set; }

        [JsonProperty("admin_graphql_api_id")]
        [JsonPropertyName("admin_graphql_api_id")]
        public string AdminGraphQLAPIId { get; set; }
        
        [JsonProperty("app_id")]
        [JsonPropertyName("app_id")]
        public long? AppId { get; set; }
}

办法2:配置ASP.NET Core使用Newtonsoft.Json作为默认序列化器

  1. 安装NuGet包Microsoft.AspNetCore.Mvc.NewtonsoftJson
  2. 在Program.cs中添加配置:
builder.Services.AddControllers()
    .AddNewtonsoftJson();

这样项目就会使用Newtonsoft.Json处理序列化,ShopifySharp的[JsonProperty]特性就能正常生效。

内容的提问来源于stack exchange,提问作者Saghar Francis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 17:06:32