Newtonsoft.Json.JsonConvert.DeserializeObject
请问这个怎么写一个方法用JISON反序列化把值取出来呢? 请帮我写一个方法。
我不会写反序列化,请帮我用C#把下面的值写一个反序列化。
{
"code": 200,
"msg": "success",
"newslist": [
"TENCENT",
"腾讯控股",
"369.400",
"370.000",
"371.200",
"367.000",
"370.000",
"0.000",
"0.000",
"369.800",
"370.000",
"5967971301",
"16162580",
"41.304",
"0.238",
"475.600",
"251.400",
"2019/03/20",
"16:08"
]
}
public class ResultDto
{
public int Code { get; set; }
public string Msg { get; set; }
public string[] NewsList { get; set; }
}
var str = "{\"code\":200,\"msg\":\"success\",\"newslist\":[\"TENCENT\",\"腾讯控股\",\"369.400\",\"370.000\",\"371.200\",\"367.000\",\"370.000\",\"0.000\",\"0.000\",\"369.800\",\"370.000\",\"5967971301\",\"16162580\",\"41.304\",\"0.238\",\"475.600\",\"251.400\",\"2019/03/20\",\"16:08\"]}";
var dto = Newtonsoft.Json.JsonConvert.DeserializeObject<ResultDto>(str);
首先写个类
public class Info
{
public string code{get;set;}
public string msg{get;set;}
public List<string> newslists{get;set;}
}
然后直接 Info info=Newtonsoft.Json.JsonConvert.DeserializeObject<Info> (data);//data就是你要反序列化的字符串
给你例子,可以仿照来做
首先定义一个类Student
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.Serialization;
namespace JsonSerializerAndDeSerializer
{
[DataContract]
public class Student
{
[DataMember]
public int ID { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public int Age { get; set; }
[DataMember]
public string Sex { get; set; }
}
}
然后
//使用DataContractJsonSerializer方式需要引入的命名空间,在System.Runtime.Serialization.dll.中
using System.Runtime.Serialization.Json;
#region 1.DataContractJsonSerializer方式序列化和反序列化
Student stu = new Student()
{
ID = 1,
Name = "曹操",
Sex = "男",
Age = 1000
};
//序列化
DataContractJsonSerializer js = new DataContractJsonSerializer(typeof(Student));
MemoryStream msObj = new MemoryStream();
//将序列化之后的Json格式数据写入流中
js.WriteObject(msObj, stu);
msObj.Position = 0;
//从0这个位置开始读取流中的数据
StreamReader sr = new StreamReader(msObj, Encoding.UTF8);
string json = sr.ReadToEnd();
sr.Close();
msObj.Close();
Console.WriteLine(json);
//反序列化
string toDes = json;
//string to = "{\"ID\":\"1\",\"Name\":\"曹操\",\"Sex\":\"男\",\"Age\":\"1230\"}";
using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(toDes)))
{
DataContractJsonSerializer deseralizer = new DataContractJsonSerializer(typeof(Student));
Student model = (Student)deseralizer.ReadObject(ms);// //反序列化ReadObject
Console.WriteLine("ID=" + model.ID);
Console.WriteLine("Name=" + model.Name);
Console.WriteLine("Age=" + model.Age);
Console.WriteLine("Sex=" + model.Sex);
}
Console.ReadKey();
#endregion
@microsoft 谢谢你,问题已得到解答。
StudentInfo info = Newtonsoft.Json.JsonConvert.DeserializeObject<StudentInfo>(myjson);//data就是你要反序列化的字符串
myRobinT[0] = info.Code.ToString().Trim();
myRobinT[1] = info.Msg;
myRobinT[2] = info.NewsList[0].ToString().Trim();
myRobinT[3] = info.NewsList[1].ToString().Trim();
myRobinT[4] = info.NewsList[2].ToString().Trim();
myRobinT[5] = info.NewsList[3].ToString().Trim();
myTempID = "";
public class StudentInfo
{
//public string code { get; set; }
//public string msg { get; set; }
//public List<string> newslists { get; set; }
public int Code { get; set; }
public string Msg { get; set; }
public string[] NewsList { get; set; }
}