我使用Json.NET序列化一个枚举IEnumerable
和DateTime
的对象。它类似于:
class Chart
{
// ...
public IEnumerable<int> YAxis { get; set; }
public IEnumerable<State> Data { get; set; }
public IEnumerable<DateTime> XAxis { get; set; }
}
但是我需要一个自定义JsonConverter
来使枚举序列化为字符串并更改DateTime
字符串格式。
我已尝试使用JsonConverter
提到的IsoDateTimeConverter
属性用于枚举,自定义[JsonConverter(typeof(StringEnumConverter))]
public IEnumerable<State> Data { get; set; }
[JsonConverter(typeof(MyDateTimeConverter))]
public IEnumerable<DateTime> XAxis { get; set; }
已完成here:
IEnumerable
我希望它也可以用于JsonConverterAttribute
,但不出所料:
无法转换类型&#39; WhereSelectArrayIterator`2 [System.Int32,Model.State]&#39;输入&#39; System.Enum&#39;。
有没有办法说[JsonProperty(ItemConverterType = typeof(StringEnumConverter))]
public IEnumerable<State> Data { get; set; }
[JsonProperty(ItemConverterType = typeof(MyDateTimeConverter))]
public IEnumerable<DateTime> XAxis { get; set; }
适用于每个项目而不适用于可枚举本身?
答案 0 :(得分:4)
事实证明,对于可枚举项,您必须使用here和JsonPropertyAttribute
属性,如下所示:
JsonArrayAttribute
ItemConverterType
中提到了这一点:
要将JsonConverter应用于集合中的项目,请使用JsonArrayAttribute,JsonDictionaryAttribute或JsonPropertyAttribute,并将ItemConverterType属性设置为您要使用的转换器类型。
你可能会对from Bio import SeqIO
from Bio.SeqUtils.ProtParam import ProteinAnalysis
for seq_record in SeqIO.parse("protein_x.txt", "fasta"):
print(seq_record.id), ProteinAnalysis(repr(seq_record.seq)).get_amino_acids_percent().items()
感到困惑,但它
无法定位财产。