带有 emitLowercaseUnderscoreNames = true 的 Servicestack JsConfig 不适用于具有字母数字名称的属性
Servicestack JsConfig with emitLowercaseUnderscoreNames = true does not work on properties with alphanumeric names
我正在使用 Servicestack JsonConfig 来序列化和反序列化 JSON。但对于以下 class,它适用于某些属性而不适用于其他属性。
public class Address
{
public string Street1 { get; set; }
public string Street2 { get; set; }
public string City { get; set; }
public string State { get; set; }
public string ZipCode { get; set; }
}
当我将其反序列化为 JSON 时,ZipCode 被正确表示为 "zip_code",但 Street1 被表示为 "street1",其中预期的显示为 "street_1"。以下是代码
using (JsConfig.With(emitLowercaseUnderscoreNames: true, propertyConvention: PropertyConvention.Lenient))
{
//serialize into json
requestJsonString = JsonSerializer.SerializeToString(request.SubscriptionRequest);
}
我得到的JSON部分是
{"address":{"street1":"100 Talabow Street","street2":"100 Talabow Street","city":"Houston","state":"TX","zip_code":"02215"}}
请帮忙。提前致谢。
此行为是设计使然,您可以通过提供具有 [DataMember(Name]
属性的别名来更改它,例如:
[DataContract]
public class Address
{
[DataMember(Name="street_1")]
public string Street1 { get; set; }
[DataMember(Name="street_2")]
public string Street2 { get; set; }
[DataMember]
public string City { get; set; }
[DataMember]
public string State { get; set; }
[DataMember]
public string ZipCode { get; set; }
}
或者重命名您的属性:
public class Address
{
public string Street_1 { get; set; }
public string Street_2 { get; set; }
}
我正在使用 Servicestack JsonConfig 来序列化和反序列化 JSON。但对于以下 class,它适用于某些属性而不适用于其他属性。
public class Address
{
public string Street1 { get; set; }
public string Street2 { get; set; }
public string City { get; set; }
public string State { get; set; }
public string ZipCode { get; set; }
}
当我将其反序列化为 JSON 时,ZipCode 被正确表示为 "zip_code",但 Street1 被表示为 "street1",其中预期的显示为 "street_1"。以下是代码
using (JsConfig.With(emitLowercaseUnderscoreNames: true, propertyConvention: PropertyConvention.Lenient))
{
//serialize into json
requestJsonString = JsonSerializer.SerializeToString(request.SubscriptionRequest);
}
我得到的JSON部分是
{"address":{"street1":"100 Talabow Street","street2":"100 Talabow Street","city":"Houston","state":"TX","zip_code":"02215"}}
请帮忙。提前致谢。
此行为是设计使然,您可以通过提供具有 [DataMember(Name]
属性的别名来更改它,例如:
[DataContract]
public class Address
{
[DataMember(Name="street_1")]
public string Street1 { get; set; }
[DataMember(Name="street_2")]
public string Street2 { get; set; }
[DataMember]
public string City { get; set; }
[DataMember]
public string State { get; set; }
[DataMember]
public string ZipCode { get; set; }
}
或者重命名您的属性:
public class Address
{
public string Street_1 { get; set; }
public string Street_2 { get; set; }
}