首页 > 解决方案 > 在传递给 json 之前从对象中删除字段

问题描述

我有一个与 Jira rest api 一起使用的 Jira 对象;当我只有一个 Jira 项目,因此一组字段来处理这个问题时工作正常,但是现在我有许多具有不同字段的不同项目,我需要能够动态删除某些项目以前不需要的字段我将它传递给 Jira。我知道每个项目可以有一个自定义对象,但我宁愿制作和维护一个包含所有可能项目的单个对象,并在将其传递给 api 之前删除每个项目不需要的东西。

默认字段:

[DataContract]
public class FieldsUpdate
{
    [DataMember(Name = "issuetype")]
    public Issuetype issuetype;
    [DataMember(Name = "project")]
    public Project project;
    [DataMember(Name = "labels")]
    public List<object> labels = new List<object>();
    [DataMember(Name = "description")]
    public string description;
    [DataMember(Name = "summary")]
    public string summary;
    [DataMember(Name = "customfield_10400")]
    public object ExpectedDelDate;        
}

上字段级别:

[DataContract]
public class JiraItmAddUpdate
{

    [DataMember(Name = "fields")]
    public FieldsUpdate fields = new FieldsUpdate();

    public JiraItmAddUpdate()
    {
        FieldsUpdate fields = new FieldsUpdate();
    }

}

当前使用示例:

JiraItmAddUpdate JiriUpdateFlds = new JiraItmAddUpdate();
JiriUpdateFlds.fields.summary = "Some Summary";
JiriUpdateFlds.fields.description = "Some Description"
var Request = JiraHttpClient.Client.PutAsJsonAsync(str_IssueKey + "/", JiriUpdateFlds);

这会产生类似的东西

    {"fields": {
                "summary": "Some Summary",
                "description" = "Some Description"
                }
     }

例如,有时我需要总结的只是摘要,但它必须保留“字段”父级。我看过 ExpandoObject 但似乎无法让它做我想做的事,有人知道我如何发送动态对象而无需为每个 jira 项目构建单独的字段类吗?

标签: c#jsonjira-rest-api

解决方案


将 jira 类设为基类并为每个项目继承它。然后,您只需转换为基类。


推荐阅读