如果后臺(tái)是一個(gè)JSON的字符串格式如下:
string str = "{\"Success\":true,\"Msg\":\"成功!\"}";
我們之間轉(zhuǎn)成dynamic然后獲取里面某個(gè)屬性即可。
dynamic response = Newtonsoft.Json.JsonConvert.DeserializeObject(str);
string a = response.Success; string b = response.Msg;
還有兩種較為復(fù)雜的方法:
Data data1 = JsonConvert.DeserializeObject<Data>(str);獲取就直接:data1.Success。
或者:List<Data> list = JsonConvert.DeserializeObject<List<Data>>(str);獲取需要循環(huán)獲?。篺oreach (var item in list)
{
item.Success
}
但是以上2個(gè)方法都需要聲明類
public class Data
{
public string Success { get; set; }
public string Msg { get; set; }
}
如果后臺(tái)穿過來是一個(gè)Json(new { success = response.Success, msg = response.Msg }, JsonRequestBehavior.AllowGet);格式;直接轉(zhuǎn)成dynamic 格式。獲?。?nbsp;resulOb.Data.success。
--------------題外話
其實(shí)也可以用這種方式直接傳給前臺(tái):
public JsonResult projectPush(){
Json(new { success = false, msg = "成功!" }, JsonRequestBehavior.AllowGet);
}
前臺(tái)獲取的時(shí)候直接:var result = Ext.decode(repsonse.responseText);result.success即可。當(dāng)然這個(gè)是基于EXT的。你可以返回之后調(diào)適一下其他框架下的。
-------------------------------------------------------------------------------------------------------- 分割線 ------------------------------------------------------------------------------------------------------------------------------------------
Newtonsoft.Json在json和對(duì)象之間轉(zhuǎn)化是一個(gè)非常強(qiáng)大的工具。
對(duì)象轉(zhuǎn)化json字符串
Newtonsoft.Json.JsonConvert.SerializeObject()
json字符串轉(zhuǎn)化為指定對(duì)象
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轉(zhuǎn)換json字符串
XmlDocument doc = new XmlDocument(); doc.LoadXml(PostBackXml);var jObject = Newtonsoft.Json.JsonConvert.SerializeXmlNode(doc);//Xml轉(zhuǎn)json
當(dāng)上面的XML在序列化是通常會(huì)出現(xiàn)根目錄,根目錄內(nèi)出現(xiàn)的才是需要序列化的對(duì)象元素。
不妨先轉(zhuǎn)換為JObject,像下面這樣使用jobj["MongoTask"]轉(zhuǎn)換
var json=JsonConvert.SerializeXmlNode(item); var jobj = JsonConvert.DeserializeObject<JObject>(json); tasklist.Add(jobj["MongoTask"].ToObject<MongoTask>());
如果需要獲取XML中屬性的值,比如獲取<user name='張三'>獲取張三時(shí)name屬相帶有@符號(hào)
代碼中過濾到@符號(hào)就可以正常取值
var jobj = Newtonsoft.Json.JsonConvert.DeserializeObject<JObject>(jObject.Replace("@",""));var name= jobj["Response"]["Body"]["OrderResponse"]["name"];
小結(jié):
1:直接解析字符串
var jObject=JObject.Parse(jsonstring);var time= jObject["time"].ToString();//獲取time{"time":"2016-06-06 11:11:11"}
2:通過轉(zhuǎn)成dynamic然后獲取里面某個(gè)屬性即可。
dynamic response = Newtonsoft.Json.JsonConvert.DeserializeObject(str);
string a = response.Success; string b = response.Msg;
3:先構(gòu)造一個(gè)對(duì)象,再將json字符串轉(zhuǎn)型為對(duì)象,獲取它的屬性
================================================================================
1)使用JObject讀寫字符串:
JObject jo = JObject.Parse(jsonText);string[] values = jo.Properties().Select(item => item.Value.ToString()).ToArray();
(2)使用JsonSerializer讀寫對(duì)象(基于JsonWriter與JsonReader):
數(shù)組型數(shù)據(jù)
string jsonArrayText1 = "[{'a':'a1','b':'b1'},{'a':'a2','b':'b2'}]";JArray ja = (JArray)JsonConvert.DeserializeObject(jsonArrayText1);string ja1a = ja[1]["a"].ToString();//或者JObject o = (JObject)ja[1];string oa = o["a"].ToString();
嵌套格式
string jsonText = "{\"beijing\":{\"zone\":\"海淀\",\"zone_en\":\"haidian\"}}";JObject jo = (JObject)JsonConvert.DeserializeObject(jsonText);string zone = jo["beijing"]["zone"].ToString();string zone_en = jo["beijing"]["zone_en"].ToString();
聯(lián)系客服