我正在使用Swagger进行Web API文档。 在我的Web API中,我有如下实体:
# Load Datasets
from sklearn.datasets import load_iris
iris = load_iris()
DF_X = pd.DataFrame(iris.data, index = ["%d_%d"%(i,c) for i,c in zip(range(X.shape[0]), iris.target)], columns=iris.feature_names)
# Correlation
DF_corr = DF_X.corr()
# Figure
fig, ax= plt.subplots(ncols=2, figsize=(16,6))
sns.heatmap(DF_corr, annot=True, ax=ax[0])
# Masked Figure
threshold = 0
DF_mask = DF_corr.copy()
DF_mask[DF_mask < threshold] = 0
sns.heatmap(DF_mask, annot=True, ax=ax[1])
# Annotating
Ar_annotation = DF_mask.as_matrix()
Ar_annotation[Ar_annotation == 0] = None
Ar_annotation
# array([[ 1. , nan, 0.87175416, 0.81795363],
# [ nan, 1. , nan, nan],
# [ 0.87175416, nan, 1. , 0.9627571 ],
# [ 0.81795363, nan, 0.9627571 , 1. ]])
print(DF_mask.shape, Ar_annotation.shape)
# (4, 4) (4, 4)
sns.heatmap(DF_mask, annot=Ar_annotation, fmt="")
# ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
我使用DerivedEntity1作为Web API方法的输入参数,并生成了swagger文档。
在此之前它很好,但问题是,该文档中的DerivedEntity1 JSON字符串显示BaseEntProp1和&amp; BaseEntProp2应该被排除在外。有人可以帮助我如何排除这些吗?
注意: 1. DerivedEntity1的DerEntProp1属性被正确排除。 2.只是为了确认,在生成文档后的启动方法中,我有以下硬编码:
public class BaseEntity
{
public string BaseEntProp1{get;set;}
public string BaseEntProp2{get;set;}
public virtual bool ShouldSerializeBaseEntProp1()
{
return true;
}
public virtual bool ShouldSerializeBaseEntProp1()
{
return true;
}
}
public class DerivedEntity1 : BaseEntity
{
[JsonIgnore]
public string DerEntProp1{get;set;}
public string DerEntProp2{get;set;}
public override bool ShouldSerializeBaseEntProp1()
{
return false;
}
public override bool ShouldSerializeBaseEntProp1()
{
return false;
}
}
以上测试通过,即tempJson没有BaseEntProp1&amp; BaseEntProp2。所以,我怀疑SWAGGER无法调用正确的ShouldSerialize *方法。任何帮助都非常感谢。
由于
答案 0 :(得分:0)
最后,我以不同的方式解决了它,因为问题与Swagger无关。
我已经使用虚拟属性创建了基本抽象类。在派生类中,我重载了这些属性并用JsonIgnore属性修饰。这解决了我的问题。