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

为何相同JSON的两次POST请求返回不同响应?Blazor WASM调用Jira API

问题原因分析

你的问题核心在于Jira API对请求JSON的字段校验严格性,以及两种C#类定义在序列化时的细微差异:

  • Jira API的Content结构要求
    Jira的评论Content字段是多态结构:

    • 当type为text时,必须包含text字段
    • 当type为hardBreak(或其他非text类型)时,不允许出现text字段(哪怕是null值)
  • 两种类定义的序列化差异

    • 第一种定义:Content类固定包含Text属性。即使你将Text设为null并添加NullValueHandling=NullValueHandling.Ignore,如果序列化配置未全局生效(或Blazor WASM默认序列化行为有特殊处理),最终生成的JSON仍可能包含"text": null字段。Jira API的严格校验会将这个额外字段判定为无效输入,返回400错误。
    • 第二种定义:通过继承拆分类型,创建hardBreak类型的内容时使用基类Content的实例(无Text属性),序列化后自然不会出现text字段,完全符合Jira API的Schema要求,因此请求可以正常执行。
验证与解决建议
  • 用浏览器开发者工具的Network面板对比两种方式生成的请求JSON,会发现第一种方式的hardBreak内容里大概率存在"text": null字段,而第二种没有。
  • 如果想继续使用第一种类定义,需要确保序列化配置全局且正确应用NullValueHandling.Ignore:
    若使用Json.NET:
    var settings = new JsonSerializerSettings
    {
        NullValueHandling = NullValueHandling.Ignore
    };
    string json = JsonConvert.SerializeObject(yourContentObject, settings);
    
    若使用System.Text.Json:
    var options = new JsonSerializerOptions
    {
        DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull
    };
    string json = JsonSerializer.Serialize(yourContentObject, options);
    

内容的提问来源于stack exchange,提问作者Alexander Fagrelius

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 02:46:00