我发现应该为每个属性添加解决方案[JsonPropertyName(“currentPage”)]属性,或者第二个更好的解决方案添加camelCaseOption,如下所示
var options = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
};
// Act
var pagedResult = JsonSerializer.Deserialize<PagedResult<UserDtoTest>>(jsonString, options);
我有这些类,我想测试JSON字符串序列化和反序列化是否正常工作,但测试失败,因为反序列化JSON字符串后得到的pagedResult只包含默认值。
x一个一个一个一个x一个一个二个x
以及
public class UserDtoTest
{
[JsonPropertyName("name")]
public string Name { get; set; }
[JsonPropertyName("active")]
public bool Active { get; set; }
}
当我试图反序列化json字符串时,它返回带有默认值的PagedResult,有什么想法吗?
[Fact]
public void ReturnsPagedResultWithCorrectProperties()
{
// Arrange
string jsonString = @"{
""items"": [
{
""name"": ""anatolijs"",
""active"": true
},
{
""name"": ""trololo"",
""active"": true
},
{
""name"": ""rindām"",
""active"": true
},
{
""name"": ""terepere"",
""active"": true
}
],
""isEmpty"": false,
""isNotEmpty"": true,
""currentPage"": 1,
""resultsPerPage"": 10,
""totalPages"": 1,
""totalResults"": 4
}";
// Act
var pagedResult = JsonSerializer.Deserialize<PagedResult<UserDtoTest>>(jsonString);
var serializedJsonString = JsonSerializer.Serialize<PagedResult<UserDtoTest>>(pagedResult);
// Assert
jsonString.Should().Be(serializedJsonString);
}
一个约束必须使用System.Text.Json.Serialization;
1条答案
按热度按时间eoigrqb61#
问题是您基类中没有设置,您可以修复它
如果您希望删除PropertyName属性,则需要不同的选项