Rok*_*Rok 4 c# system.text.json
假设我们有这些记录:
public record ResponseFake
{
[JsonConstructor]
public ResponseFake(OhlcFake[] quotes)
{
Quotes = quotes;
}
public OhlcFake[] Quotes { get; }
}
public record OhlcFake
{
[JsonConstructor]
public OhlcFake(QuoteFake o)
{
O = o;
}
public QuoteFake O { get; }
}
public record QuoteFake
{
[JsonConstructor]
public QuoteFake(decimal bid)
{
Bid = bid;
}
public decimal Bid { get; }
}
Run Code Online (Sandbox Code Playgroud)
这个 XUnit 测试:
[Fact]
public void QuoteChartResponseFakeDeserializationTest()
{
var data = @"{""quotes"": [ { ""o"": { ""bid"": 1.1 } } ] }";
var result = System.Text.Json.JsonSerializer.Deserialize<ResponseFake>(data);
result.Quotes.Should().NotBeEmpty();
}
Run Code Online (Sandbox Code Playgroud)
测试失败,并显示错误“预期结果。引号不为空,但已找到。”
我应该做什么才能获得Quotes人口?
解决方案是JsonSerializerOptions添加PropertyNamingPolicy.
var options = new JsonSerializerOptions()
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
};
var result = System.Text.Json.JsonSerializer.Deserialize<ResponseFake>(data, options);
Run Code Online (Sandbox Code Playgroud)