亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何驗證 JObject 是否屬于特定類型

如何驗證 JObject 是否屬于特定類型

C#
胡說叔叔 2023-08-20 11:08:30
我需要弄清楚 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>(); 
查看完整描述

3 回答

?
犯罪嫌疑人X

TA貢獻2080條經驗 獲得超4個贊

編輯:您可以使用[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>();


查看完整回答
反對 回復 2023-08-20
?
qq_遁去的一_1

TA貢獻1725條經驗 獲得超8個贊

public class CustomObject

{

    [JsonProperty("FirstName")]

    string fname { get; set; }


    [JsonProperty("LastName")]

    string lname { get; set; }

}

public void Test()

    {

        Dictionary<string, string> collection = new Dictionary<string, string>();

        collection.Add("FirstName", "Test");

        collection.Add("LastName", "1234");

        JObject jsobObj = JObject.Parse(JsonConvert.SerializeObject(collection, Newtonsoft.Json.Formatting.Indented));


        CustomObject custObj = new CustomObject();


        if (jsobObj != null)

        {

            if (jsobObj.Property("FirstName") != null && jsobObj.Property("LastName") != null)

            {

                custObj = jsobObj.ToObject<CustomObject>();

            }

        }


    }


查看完整回答
反對 回復 2023-08-20
?
GCT1015

TA貢獻1827條經驗 獲得超4個贊

您可以使用.SelectToken()它從具有多個不同對象的較大 json 中獲取特定對象。

對于您的具體示例,它看起來像這樣。

custObj?=?(CustomObject)jsonObj.SelectToken("CustomObject");

您要將所選標記轉換為CustomObject,然后將其分配給您的custObj變量。

查看完整回答
反對 回復 2023-08-20
  • 3 回答
  • 0 關注
  • 213 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號