gpt4 book ai didi

c# - 如何验证 JObject 是否属于特定类型

转载 作者:行者123 更新时间:2023-12-02 16:53:33 26 4
gpt4 key购买 nike

我需要确定 JObject 是否具有匹配 CustomObject 类型的正确属性。我使用 JObject.ToObject 希望如果属性与 CustomObject 不匹配它会失败,但它仍然创建所有属性为 null 的 CustomObject。

我可以在调用 ToObject 之前验证它吗?

class CustomObject
{
string fname;
string lname;
}

void test()
{
string json = "{\"User\": \"Hello\"}";
JObject jsonObj = JObject.Parse(json);

CustomObject custObj = null;


// this always creates CustomObject instance
// I need to validate that jsonObj has valid attributes that match CustomObject
custObj = JObject.ToObject<CustomObject>();

最佳答案

编辑:您可以使用[JsonRequiredAttribute]:

class CustomObject
{
[JsonRequiredAttribute]
string fname;
[JsonRequiredAttribute]
string lname;
}

或者,您可以使用 Newtonsoft.Json.Schema验证:

var schema = JSchema.Parse(@"{ 
'type': 'object',
'properties': {
'fname': { 'type': 'string' },
'lname': { 'type': 'string' }
},
'additionalProperties': false,
'required': ['name', 'email']
}");
var jsonObj = JObject.Parse("{\"User\": \"Hello\"}");

// throws if not valid
jsonObj.Validate(schema);

// or, if you want to handle it yourself
if (!jsonObj.IsValid(schema, out IList<ValidationError> errors))
{
// ...
}

// if all pass
var custObj = jsonObj.ToObject<CustomObject>();

关于c# - 如何验证 JObject 是否属于特定类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57435715/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com