我怎样才能有一个验证 c# double 的模式?
c# double 可以是:“NaN”、“Infinity”、“-Infinity”。这在我们的系统中很重要,因为存在取决于这些值的逻辑。
JSON 序列化/反序列化完美运行。但我无法验证的是在下面的示例中,如果要反序列化的 JSON 包含一些无法转换为双精度的不同字符串。验证通过,然后它只会在反序列化中崩溃。
[TestMethod]
public void test3()
{
string json = @"{'A':'hello'}";
// validate
string myschemaJson = @"{
'description': 'An employee', 'type': 'object',
'properties':
{
'A': {'allOf':[{'type':'string','enum': ['NaN','Infinity','-Infinity']}, {'type':'number'}]}
}
}";
var schema = JsonSchema.Parse(myschemaJson);
JObject myObjJson = JObject.Parse(json);
// validation
bool isValid = myObjJson.IsValid(schema, out IList<string> errors);
isValid.Should().BeTrue(string.Join(",\n", errors.ToArray()));
// deserialize
var deserializeObject = JsonConvert.DeserializeObject<MySimpleObj>(json);
Console.WriteLine(deserializeObject.A);
}
public class MySimpleObj
{
public double A { get; set; }
}