【问题标题】:Remove fields from objects before passing to json在传递给 json 之前从对象中删除字段
【发布时间】:2018-11-05 07:44:50
【问题描述】:

我有一个与 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 项目构建单独的字段类吗?

【问题讨论】:

  • 正确的解决方案是建立一个类层次结构,这也可能使您在代码中更容易,因为您不再需要猜测哪些字段需要帖子类型 X 的值.

标签: c# json jira-rest-api


【解决方案1】:

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

【讨论】:

  • 你能举个例子吗?
  • jira api 可以使用的 jira 类现在是您的基类。对于每个项目,您都继承基类并添加一个函数“ConvertToBaseClass()”以将对象“转换”为基类。所以现在您只需要在 ProjectJira 对象上调用“ConvertToBaseClass()”即可获取使用过的对象。 TLDR:不要尝试删除不必要的属性,只需将其转换为所需的对象即可。
  • 通过创建一个将继承的类转换为基类的函数,我是否会得到所有我不想要的字段?
  • 为什么基类在转换之后应该包含更多的字段?
  • 就是这样,传递给 Jira 的对象需要包含更少的字段,否则 Jira Api 将返回错误,因为并非所有字段都可用于每个项目。对不起,如果我误解了你的意思。
猜你喜欢
  • 1970-01-01
  • 2013-10-06
  • 2018-09-28
  • 2017-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-25
相关资源
最近更新 更多