反序列化JSON字符串

1.直接反序列化JSON字符串

//引用序列化、反序列化JSON字符串用到的空间  
using Newtonsoft.Json;    
using Newtonsoft.Json.Linq;   
   
 //定义一个JSON字符串   
string jsonText = "[{'a':'aaa','b':'bbb','c':'ccc'},{'a':'aaa2','b':'bbb2','c':'ccc2'}]";    
//反序列化JSON字符串  
JArray ja =(JArray) JsonConvert.DeserializeObject(jsonText);   
 //将反序列化的JSON字符串转换成对象  
JObject o = (JObject)ja[1];    
//读取对象中的各项值  
Console.WriteLine(o["a"]);    
Console.WriteLine(ja[1]["a"]);

2.定义对象列表,然后反序列化JSON字符串

先添加一个类,定义一个对象

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Web;  
  
/// <summary>    
///Customer 的摘要说明    
/// </summary>    
public class Customer  
{  
    //在序列化前后没有变动    
    public string a  
    { get; set; }  
    //在序列化前后设置和重置    
    public string b  
    { get; set; }  
    //设置为null,但在序列化后填充    
    public string c  
    { get; set; }  
    public string Other  
    { get; set; }  
    public Customer()  
    {  
        //    
        //TODO: 在此处添加构造函数逻辑    
        //    
        a = "";  
        b = "";  
        c = "";  
        Other = null;  
    }  
}

反序列化JSON字符串

//引用序列化、反序列化JSON字符串用到的空间  
using Newtonsoft.Json;    
using Newtonsoft.Json.Linq;   
//定义一个JSON字符串   
string jsonText = "[{'a':'aaa','b':'bbb','c':'ccc'},{'a':'aaa2','b':'bbb2','c':'ccc2'}]";    
//反序列化JSON字符串,将JSON字符串转换成LIST列表  
List<Customer> _list = JsonConvert.DeserializeObject<List<Customer>>(jsonText);    
//读取列表中的值  
Console.WriteLine(_list[1].a);    
foreach (Customer c in _list)    
{    
    Console.WriteLine(c.c);    
}

3.定义对象列表,然后反序列化JSON字符串

先添加一个类,定义一个对象

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Web; 

    public class JobInfo
    {
        public string TaskRoleSpaces { get; set; }
        public string TaskRoles { get; set; }
        public string ProxyUserID { get; set; }
        public string UserID { get; set; }
        public string UserName { get; set; }
        public string UserSystemName { get; set; }
        public string OperationName { get; set; }
        public string OperationValue { get; set; }
        public string OperationValueText { get; set; }
        public DateTime SignDate { get; set; }
        public string Comment { get; set; }
        public string FormDataHashCode { get; set; }
        public string SignatureDivID { get; set; }
    }

反序列化JSON字符串

using Newtonsoft.Json;    
using Newtonsoft.Json.Linq; 

string json = @"[{'TaskRoleSpaces':'','TaskRoles':'','ProxyUserID':'5d9ad5dc1c5e494db1d1b4d8d79b60a7','UserID':'5d9ad5dc1c5e494db1d1b4d8d79b60a7','UserName':'姓名','UserSystemName':'2234','OperationName':'送合同负责人','OperationValue':'同意','OperationValueText':'','SignDate':'2013-06-19 10:31:26','Comment':'同意','FormDataHashCode':'','SignatureDivID':''},{'TaskRoleSpaces':'','TaskRoles':'','ProxyUserID':'2c96c3943826ea93013826eafe6d0089','UserID':'2c96c3943826ea93013826eafe6d0089','UserName':'姓名2','UserSystemName':'1234','OperationName':'送合同负责人','OperationValue':'同意','OperationValueText':'','SignDate':'2013-06-20 09:37:11','Comment':'同意','FormDataHashCode':'','SignatureDivID':''}]";
 
            List<JobInfo> jobInfoList = JsonConvert.DeserializeObject<List<JobInfo>>(json);
 
            foreach (JobInfo jobInfo in jobInfoList)
            {
                Console.WriteLine("UserName:" + jobInfo.UserName + "UserID:" + jobInfo.UserID);
            }


需要借助了Newtonsoft.Json.dll这个工具



你可能感兴趣的:(反序列化JSON字符串)