標籤: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