JsonDocument 解析 JsonReaderException - xUnit
JsonDocument Parse JsonReaderException - xUnit
我想我找到了一种更简洁的方法来测试 string
以查看其是否有效 JSON
;然而,当我 运行 测试失败时,因为它的 returns 是 JsonReaderException
所以当我尝试将类型更改为此时,我收到保护错误,因为它似乎是内部的??
我在我的项目中使用 System.Text.Json
。
如何更改它以便我可以使用现有代码:
public ApplicationSettings WithTemplate(string template) {
try {
JsonDocument.Parse(template);
baseTemplate = template;
}
catch(JsonException ex) {
throw ex;
}
return this;
}
测试代码:
[Fact]
public void WithTemplate_ThrowsJsonExceptionWhenBaseTemplateIsInvalid() {
Assert.Throws<JsonException>(() => new ApplicationSettings()
.WithTemplate("345[]{}q345"));
}
我找到了一个与 JsonDocument.Parse()
一样紧凑的解决方案,用于使用 JsonSerializer
.
检查 json
字符串的有效性
string malformedJson = "345[]{}q345"
JsonSerializer.Deserialize<object>(malformedJson)
然后我能够针对异常 JsonException
进行测试,而不必担心 JsonReaderException
我想我找到了一种更简洁的方法来测试 string
以查看其是否有效 JSON
;然而,当我 运行 测试失败时,因为它的 returns 是 JsonReaderException
所以当我尝试将类型更改为此时,我收到保护错误,因为它似乎是内部的??
我在我的项目中使用 System.Text.Json
。
如何更改它以便我可以使用现有代码:
public ApplicationSettings WithTemplate(string template) {
try {
JsonDocument.Parse(template);
baseTemplate = template;
}
catch(JsonException ex) {
throw ex;
}
return this;
}
测试代码:
[Fact]
public void WithTemplate_ThrowsJsonExceptionWhenBaseTemplateIsInvalid() {
Assert.Throws<JsonException>(() => new ApplicationSettings()
.WithTemplate("345[]{}q345"));
}
我找到了一个与 JsonDocument.Parse()
一样紧凑的解决方案,用于使用 JsonSerializer
.
json
字符串的有效性
string malformedJson = "345[]{}q345"
JsonSerializer.Deserialize<object>(malformedJson)
然后我能够针对异常 JsonException
进行测试,而不必担心 JsonReaderException