首页 > 解决方案 > 当所有值都是字符串形式时,如何在.Net Core中验证json字符串中的字段数据类型?

问题描述

我试图在.Net Core 中反序列化之前验证 JSON 字符串的属性数据类型。问题是 JSON 中的值是字符串形式,无论是 bool 还是 int。

例如:对于对象:

class employee
{

  int id;

  string name;

  bool isActive;
}

JSON是:

Jobject jObj = JObject.Parse(
{    
   "id" : "12",

   "name" : "john",

   "isActive" : "false"
});

我尝试过使用 JSON 模式(Newtonsoft.Schema 和 NJsonSchema),但它将JSON 中的值类型(即此处的字符串)与模式中的属性类型(模式是从对象生成的)进行比较,而不是比较实际类型值(就像“假”的实际类型是布尔值)。因此在验证期间总是返回类型不匹配错误。

用于 NJsonSchema 的代码:

schema = schema.FromType<Employee>();

errors = schema.validate(jObj);

除了使用模式之外,还有更好的方法吗?(首选)

或者也许向模式添加选项?

标签: .netjson.net-corejson.netjson-deserialization

解决方案


推荐阅读