我需要将小数的输出json格式化为货币,并在要序列化的对象中指定文化,对象可以嵌套,因此无法在序列化器中预设选项。我当前的操作方式是使用额外的字符串属性来格式化输出。
[JsonIgnore]
public decimal Cost {get;set;}
[JsonIgnore]
public CultureInfo Culture {get;set;}
public string AsCurrency(decimal value) {
return string.Format(this.Culture, "{0:c}", value);
}
[JsonProperty("FormattedCost")]
public string FormatedCost {
get { return this.AsCurrency(this.Cost); }
}
Run Code Online (Sandbox Code Playgroud)
我有很多要处理的属性,我不介意反序列化,另一种语言使用JsonObject填充PDF,所以我想要字符串值。
理想情况下,我想要一个,JsonConverter
所以我可以做
[JsonProperty("FormattedCost")]
[JsonConverter(typeof(MyCurrencyConverter))]
public decimal Cost {get;set;}
Run Code Online (Sandbox Code Playgroud)
我的问题是如何访问转换器中包含对象的Culture属性。
public class MyCurrencyConverter : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
var culture = // How do I get the Culture from the parent object?
writer.WriteValue(string.format(culture, "{0:c}", (decimal)value);
}
public override object …
Run Code Online (Sandbox Code Playgroud) int x = 1;
while (x++ < 5)
{
if ((x % 2) == 0)
x += 2;
}
Run Code Online (Sandbox Code Playgroud)
问题是以下循环将执行多少次?我可以看到第1个x等于1,第2个x等于2,第3个x等于4,我认为它会执行3次,但为什么答案是2次?