.Net 的動態對象(二)動態解析Json(JObject)


在定義好了對象的類型后,通過NewtonJson我們可以方便的對一個對象進行序列化和反序列化。

在對象里面的屬性不好定義,或者不好確定的情況下,我們也可以直接把我們要反序列化的對象當做Objcet處理,但是這樣后續的操作就十分的不變,比如你要使用對象里面的某個屬性的時候

通過JObject和JArray來動態解析JSON對象,使它很容易創建和檢索的JSON內容而無需基礎類型

private string str = "{\"platform\":\"all\",\"audience\":{\"tag\":[\"深圳\",\"北京\"]},\"notification\":{\"android\":{\"alert\":\"Hi, JPush!\",\"title\":\"Send to Android\",\"builder_id\":1,\"extras\":{\"newsid\":321}},\"ios\":{\"alert\":\"Hi, JPush!\",\"sound\":\"default\",\"badge\":\"+1\",\"extras\":{\"newsid\":321}}},\"message\":{\"msg_content\":\"Hi,JPush\",\"content_type\":\"text\",\"title\":\"msg\",\"extras\":{\"key\":\"value\"}},\"sms_message\":{\"content\":\"sms msg content\",\"delay_time\":3600},\"options\":{\"time_to_live\":60,\"apns_production\":false,\"apns_collapse_id\":\"jiguang_test_201706011100\"}}";

public void Execute()
{
    //str 是一串結構層級比較多,且Key又不是很確定的Json串,這種情況當然用Objcet可以反序列化、用Dictionary<string,object>也可以,
    //但肯定都沒有JObject方便,特別是在Get、Set的時候
    dynamic model = JObject.Parse(str);

    if (model.audience != null)
    {
        var tag = model.audience.tag;//在不定義類型的情況下我們就將tag 屬性取出來了,十分的方便
        
        //將我們要賦值的數組轉換成JArray 直接賦值就可以了
        var tags = new string[] { "x", "y" };
        model.audience.tag = JArray.FromObject(tags);
        
        // 將我們要賦值的對象轉換成JObject 直接賦值就可以了
        var datas = new {
                    name = "xx",
                    org="yy"
                };
        model.audience = JObject.FromObject(datas);
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM