In SimpleJson, support enum values serialized as numbers.
Note: still doesn't support nullable enum types.
This commit is contained in:
parent
61e07eb615
commit
0301250c4b
|
|
@ -1333,6 +1333,11 @@ namespace SimpleJson
|
||||||
if (type == typeof (Guid) && string.IsNullOrEmpty(str))
|
if (type == typeof (Guid) && string.IsNullOrEmpty(str))
|
||||||
return default(Guid);
|
return default(Guid);
|
||||||
|
|
||||||
|
if (type.IsEnum)
|
||||||
|
{
|
||||||
|
type = type.GetEnumUnderlyingType();
|
||||||
|
}
|
||||||
|
|
||||||
if (value == null)
|
if (value == null)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -46,12 +46,13 @@ namespace Microsoft.AspNetCore.Blazor.Test
|
||||||
{
|
{
|
||||||
Id = 1844,
|
Id = 1844,
|
||||||
Name = "Athos",
|
Name = "Athos",
|
||||||
Pets = new[] { "Aramis", "Porthos", "D'Artagnan" }
|
Pets = new[] { "Aramis", "Porthos", "D'Artagnan" },
|
||||||
|
Hobby = Hobbies.Swordfighting
|
||||||
};
|
};
|
||||||
|
|
||||||
// Act/Assert
|
// Act/Assert
|
||||||
Assert.Equal(
|
Assert.Equal(
|
||||||
"{\"Id\":1844,\"Name\":\"Athos\",\"Pets\":[\"Aramis\",\"Porthos\",\"D'Artagnan\"]}",
|
"{\"Id\":1844,\"Name\":\"Athos\",\"Pets\":[\"Aramis\",\"Porthos\",\"D'Artagnan\"],\"Hobby\":2}",
|
||||||
JsonUtil.Serialize(person));
|
JsonUtil.Serialize(person));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -59,7 +60,7 @@ namespace Microsoft.AspNetCore.Blazor.Test
|
||||||
public void CanDeserializeClassFromJson()
|
public void CanDeserializeClassFromJson()
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var json = "{\"Id\":1844,\"Name\":\"Athos\",\"Pets\":[\"Aramis\",\"Porthos\",\"D'Artagnan\"]}";
|
var json = "{\"Id\":1844,\"Name\":\"Athos\",\"Pets\":[\"Aramis\",\"Porthos\",\"D'Artagnan\"],\"Hobby\":2}";
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var person = JsonUtil.Deserialize<Person>(json);
|
var person = JsonUtil.Deserialize<Person>(json);
|
||||||
|
|
@ -68,6 +69,7 @@ namespace Microsoft.AspNetCore.Blazor.Test
|
||||||
Assert.Equal(1844, person.Id);
|
Assert.Equal(1844, person.Id);
|
||||||
Assert.Equal("Athos", person.Name);
|
Assert.Equal("Athos", person.Name);
|
||||||
Assert.Equal(new[] { "Aramis", "Porthos", "D'Artagnan" }, person.Pets);
|
Assert.Equal(new[] { "Aramis", "Porthos", "D'Artagnan" }, person.Pets);
|
||||||
|
Assert.Equal(Hobbies.Swordfighting, person.Hobby);
|
||||||
}
|
}
|
||||||
|
|
||||||
class Person
|
class Person
|
||||||
|
|
@ -75,6 +77,9 @@ namespace Microsoft.AspNetCore.Blazor.Test
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
public string[] Pets { get; set; }
|
public string[] Pets { get; set; }
|
||||||
|
public Hobbies Hobby { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum Hobbies { Reading = 1, Swordfighting = 2 }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue