带有 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; }
}