【问题标题】:C# create JSON for REST Api callC# 为 REST Api 调用创建 JSON
【发布时间】:2018-11-08 01:07:26
【问题描述】:

我正在尝试使用 C# 中的 POST 在 Jira 中创建问题。 该调用返回此 JSON:

{
   "fields": {
      "project":
      {
         "key": "BBR"
      },
      "summary": "REST ye merry gentlemen.",
      "description": "Creating of an issue using project keys and issue type names using the REST API",
      "issuetype": {
         "name": "Story"
      }
  }
}

我想在 C# 中实现一个方法,所以我创建了 JiraCreateIssueResponse 类:

{
        public List<string> Project { get; set; } = new List<string>();
        public string Summary { get; set; }
        public string Description { get; set; }
        public List<string> IssueType { get; set; } = new List<string>();
    }

下面是我尝试使用给定参数进行具体调用的方法:

JiraCreateIssueResponse JiraIssueParams = new JiraCreateIssueResponse
            {
                Project = { $"key = {ProjectKey}" },
                Summary = summary,
                Description = "",
                IssueType = { $"name = Story" }
            };

            RestRequest restRequest = GetRestRequest(Method.POST, $"{JiraConstants.Urls.Issue}", JiraIssueParams, null);

然而,我实现了一个测试来验证这个方法,它给了我一个关于反序列化的错误,所以我得出结论,我没有很好地解析我的 JSON。 有人知道我的错误吗? 我尝试了其他实现 JSON 和使用值的方法,但我遇到了同样的问题。

【问题讨论】:

  • { "issuetype": { "name": "Story" }} 问题类型(或项目)对你来说看起来像一个列表/数组吗?它是一个对象(或字典)
  • 我应该如何实现这个?
  • 你需要修改你的班级..., Project = new Project { Key = "BBR" }, IssueType = new IssueType { Name = "Story" }。那么GetRestRequest()如何序列化并发送你的JiraIssueParams呢?

标签: c# json rest api jira


【解决方案1】:

你的班级应该是这样的:

public class JiraResponse
{
    public class JiraResponseProject
    {
        public string Key { get; set; }
    }

    public class JiraResponseIssueType
    {
        public string Name { get; set; }
    }

    private JiraResponseProject _project = new JiraResponseProject();
    private JiraResponseIssueType _issueType = new JiraResponseIssueType();

    public JiraResponseProject Project => _project;
    public JiraResponseIssueType IssueType => _issueType;

    public string Summary { get; set; }
    public string Description { get; set; }    
}

【讨论】:

    【解决方案2】:

    由于我无法发表评论,而且我们也在使用 Jira 并使用 API,因此这里有一个用于 c# 的 API 的现有包装器:https://www.nuget.org/packages/Atlassian.SDK/ 这将为您节省大量工作 - 绝对为我做了。

    项目网站托管:on bitbucket

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-09
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-15
      • 2022-12-12
      相关资源
      最近更新 更多