Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit d9dc2fa

Browse files
committed
Merge pull request #382 from jamesearl/master
ToLowercaseUnderscore should not separate digits in property names.
2 parents 8519193 + b88fd27 commit d9dc2fa

File tree

2 files changed

+24
-4
lines changed

2 files changed

+24
-4
lines changed

src/ServiceStack.Text/StringExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -692,7 +692,7 @@ public static string ToLowercaseUnderscore(this string value)
692692
var sb = new StringBuilder(value.Length);
693693
foreach (var t in value)
694694
{
695-
if (Char.IsLower(t) || t == '_')
695+
if (Char.IsDigit(t) || (Char.IsLetter(t) && Char.IsLower(t)) || t == '_')
696696
{
697697
sb.Append(t);
698698
}

tests/ServiceStack.Text.Tests/JsonTests/LowercaseUnderscoreTests.cs

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public void Does_serialize_To_lowercase_underscore()
3737
};
3838

3939
var json = dto.ToJson();
40-
40+
4141
Assert.That(json, Is.EqualTo(
4242
"{\"id\":1,\"title\":\"The Shawshank Redemption\",\"imdb_id\":\"tt0111161\",\"rating\":9.2,\"director\":\"Frank Darabont\",\"release_date\":\"\\/Date(792979200000)\\/\",\"tag_line\":\"Fear can hold you prisoner. Hope can set you free.\",\"genres\":[\"Crime\",\"Drama\"]}"));
4343

@@ -55,14 +55,21 @@ class Person
5555

5656
class WithUnderscore
5757
{
58-
public int ? user_id { get; set; }
58+
public int? user_id { get; set; }
59+
}
60+
class WithUnderscoreDigits
61+
{
62+
public int? user_id_0 { get; set; }
5963
}
6064

6165
[Test]
6266
public void Should_not_put_double_underscore()
6367
{
64-
var t = new WithUnderscore {user_id = 0};
68+
var t = new WithUnderscore { user_id = 0 };
6569
Assert.That(t.ToJson(), Is.EqualTo("{\"user_id\":0}"));
70+
71+
var u = new WithUnderscoreDigits { user_id_0 = 0 };
72+
Assert.That(u.ToJson(), Is.EqualTo("{\"user_id_0\":0}"));
6673
}
6774

6875
[Test]
@@ -76,5 +83,18 @@ public void Can_override_name()
7683
Assert.That(TypeSerializer.SerializeToString(person), Is.EqualTo("{MyID:123,name:Abc}"));
7784
Assert.That(JsonSerializer.SerializeToString(person), Is.EqualTo("{\"MyID\":123,\"name\":\"Abc\"}"));
7885
}
86+
87+
88+
class WithUnderscoreSeveralDigits
89+
{
90+
public int? user_id_00_11 { get; set; }
91+
}
92+
93+
[Test]
94+
public void Should_not_split_digits()
95+
{
96+
var u = new WithUnderscoreSeveralDigits { user_id_00_11 = 0 };
97+
Assert.That(u.ToJson(), Is.EqualTo("{\"user_id_00_11\":0}"));
98+
}
7999
}
80100
}

0 commit comments

Comments
 (0)