C# 後台解析json

來源:互聯網
上載者:User

標籤:project   des   其他   get   newton   16px   小結   got   request   

如果後台是一個JSON的字串格式如下:

string str = "{\"Success\":true,\"Msg\":\"成功!\"}";

我們之間轉成dynamic然後擷取裡面某個屬性即可。

dynamic response = Newtonsoft.Json.JsonConvert.DeserializeObject(str);

string a = response.Success; string b = response.Msg;

還有兩種較為複雜的方法:

 Data data1 = JsonConvert.DeserializeObject<Data>(str);擷取就直接:data1.Success。

或者:List<Data> list = JsonConvert.DeserializeObject<List<Data>>(str);擷取需要迴圈擷取:foreach (var item in list)
            {
                 item.Success
            }

但是以上2個方法都需要聲明類

public class Data
    {
        public string Success { get; set; }
        public string Msg { get; set; }
    }

 

 

 

如果後台穿過來是一個Json(new { success = response.Success, msg = response.Msg }, JsonRequestBehavior.AllowGet);格式;直接轉成dynamic 格式。擷取: resulOb.Data.success。

 

--------------題外話

其實也可以用這種方式直接傳給前台:

public JsonResult projectPush(){

Json(new { success = false, msg = "成功!" }, JsonRequestBehavior.AllowGet);

}

前台擷取的時候直接:var result = Ext.decode(repsonse.responseText);result.success即可。當然這個是基於EXT的。你可以返回之後調適一下其他架構下的。

--------------------------------------------------------------------------------------------------------     分割線    ------------------------------------------------------------------------------------------------------------------------------------------

Newtonsoft.Json在json和對象之間轉化是一個非常強大的工具。

對象轉化json字串

Newtonsoft.Json.JsonConvert.SerializeObject()

json字串轉化為指定對象

 Newtonsoft.Json.JsonConvert.DeserializeObject<>()

json字串直接擷取指定元素值(類似XML)

var jObject=JObject.Parse(jsonstring);var time= jObject["time"].ToString();//擷取time{"time":"2016-06-06 11:11:11"}

 xml轉換json字串

XmlDocument doc = new XmlDocument();  doc.LoadXml(PostBackXml);var jObject = Newtonsoft.Json.JsonConvert.SerializeXmlNode(doc);//Xml轉json

 當上面的XML在序列化是通常會出現根目錄,根目錄內出現的才是需要序列化的對象元素。

不妨先轉換為JObject,像下面這樣使用jobj["MongoTask"]轉換

 var json=JsonConvert.SerializeXmlNode(item); var jobj = JsonConvert.DeserializeObject<JObject>(json); tasklist.Add(jobj["MongoTask"].ToObject<MongoTask>());

 如果需要擷取XML中屬性的值,比如擷取<user name=‘張三‘>擷取張三時name屬相帶有@符號

代碼中過濾到@符號就可以正常取值

var jobj = Newtonsoft.Json.JsonConvert.DeserializeObject<JObject>(jObject.Replace("@",""));var name= jobj["Response"]["Body"]["OrderResponse"]["name"];

 

小結:

1:直接解析字串
var jObject=JObject.Parse(jsonstring);var time= jObject["time"].ToString();//擷取time{"time":"2016-06-06 11:11:11"}

2:通過轉成dynamic然後擷取裡面某個屬性即可。

dynamic response = Newtonsoft.Json.JsonConvert.DeserializeObject(str);

string a = response.Success; string b = response.Msg;

3:先構造一個對象,再將json字串轉型為對象,擷取它的屬性


C# 後台解析json

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.