C# 后台解析json,简单方法 字符串序列化为对象,取值
如果后台是一个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字符串转型为对象,获取它的属性
================================================================================
1)使用JObject读写字符串:
JObject jo = JObject.Parse(jsonText); string[] values = jo.Properties().Select(item => item.Value.ToString()).ToArray();
(2)使用JsonSerializer读写对象(基于JsonWriter与JsonReader):
数组型数据
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();
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!