代码之家  ›  专栏  ›  技术社区  ›  SteinTech

调用时获取json错误asp.net核心作用

  •  1
  • SteinTech  · 技术社区  · 4 年前

    我接到了一个简单的请求asp.net核心控制器。

    控制器:

    [ApiController]
    public class SystemAPIController : ControllerBase
    {
        [HttpPost("systemAPI/SetCulture")]
        public async Task SetCulture([FromBody] string culture)
        {
            this.HttpContext.Session.SetString("Culture", culture);
        }
    }
    

    正文中的JSON:

    {
        "culture": "nb-NO"
    }
    

    使用postman调用操作时出现以下错误:

            "The JSON value could not be converted to System.String. Path: $ | LineNumber: 0 | BytePositionInLine: 1."
    
    1 回复  |  直到 4 年前
        1
  •  2
  •   Guru Stron    4 年前

    您需要创建一个表示json结构的类:

    public class Request
    {
        public string culture {get;set;}
    }
    

    并将其用作传入操作参数:

    [HttpPost("systemAPI/SetCulture")]
    public async Task SetCulture([FromBody] Request request)
    {
        this.HttpContext.Session.SetString("Culture", request.culture);
    }
    

    也是常见的命名约定 for properties 在C#是PascalCasing,但要支持它,您可以设置它 globally 或使用 JsonPropertyNameAttribute 每个属性:

    public class Request
    {
        [JsonPropertyName("culture")]
        public string Culture {get;set;}
    }