javascriptserializer碰到数组怎么办 使用C# json 二维数组 反序列化
javascriptserializer碰到数组怎么办
JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据。您无法访问序列化程序的此实例。但是,此类公开了公共 API。因此,当您希望在托管代码中使用 JavaScript 对象符号 (JSON) 时可以使用此类。
若要序列化对象,请使用 Serialize 方法。若要反序列化 JSON 字符串,请使用 Deserialize 或 DeserializeObject 方法。若要序列化和反序列化 JavaScriptSerializer 本身不支持的类型,请使用 JavaScriptConverter 类来实现自定义转换器。然后,使用 RegisterConverters 方法注册转换器。
托管类型和 JSON 之间的映射
下表显示序列化进程中托管类型和 JSON 之间的映射。JavaScriptSerializer 本身支持这些托管类型。将 JSON 字符串反序列化为托管类型时,采用相同的映射。但是,反序列化可能是非对称的,并非所有可序列化的托管类型都可以从 JSON 反序列化得到。
二、
通过JavaScriptSerializer来实现。它的名字空间为:System.Web.Script.Serialization
如果要使用它,还须添加
System.Web.Extensions库文件引用
参考实体类:Customer
public class Customer
{
public int Unid { get set }
public string CustomerName { get set }
}
类JavaScriptSerializer描述:为启用 AFAX 的应用程序提供序列化和反序列化功能。
(一) 序列化
方法:public string Serialize(Object obj),用于将对象转换为 JSON 字符串
public string ScriptSerialize(Customer customer)
{
JavaScriptSerializer js = new JavaScriptSerializer()
return js.Serialize(customer)
}
测试:
Customer cc = new Customer { Unid = 1, CustomerName = "John" }
string strJson = ScriptSerialize(cc)
Console.WriteLine(strJson)
(二)反序列化
public Customer ScriptDeserialize(string strJson)
{
JavaScriptSerializer js = new JavaScriptSerializer()
return js.Deserialize
}
通过Deserialize
测试:
Customer c1 = ScriptDeserialize(strJson)
Console.WriteLine(c1.Unid " " c1.Custome
使用C# json 二维数组 反序列化
 int[][] arr = newint[2][]
            arr[0] = newint[] { 1, 2, 3, 4 }
            arr[1] = newint[] { 11, 22, 33, 44 }
            System.Web.Script.Serialization.JavaScriptSerializer jsSeria = newSystem.Web.Script.Serialization.JavaScriptSerializer()
            strings = jsSeria.Serialize(arr)  //序列化          
            int[][] arr2 = jsSeria.Deserialize(s, typeof(int[][])) asint[][]//反序列化
golang 切片 数组 怎么区分
数组 Arrays
数组是内置(build-in)类型,是一组同类型数据的集合,它是值类型,通过从0开始的下标索引访问元素值。在初始化后长度是固定的,无法修改其长度。当作为方法的入参传入时将复制一份数组而不是引用同一指针。数组的长度也是其类型的一部分,通过内置函数len(array)获取其长度。
初始化
数组的初始化有多种形式,查看示例代码 , 在线运行示例代码
[5] int {1,2,3,4,5}
长度为5的数组,其元素值依次为:1,2,3,4,[5] int {1,2}
长度为5的数组,其元素值依次为:1,2,0,0,0 。在初始化时没有指定初值的元素将会赋值为其元素类型int的默认值0,string的默认值是""
[...] int {1,2,3,4,5}
长度为5的数组,其长度是根据初始化时指定的元素个数决定的
[5] int { 2:1,3:2,4:3}
长度为5的数组,key:value,其元素值依次为:0,0,1,2,3。在初始化时指定了2,3,4索引中对应的值:1,2,[...] int {2:1,4:3}
长度为5的数组,起元素值依次为:0,0,1,0,3。由于指定了最大索引4对应的值3,根据初始化的元素个数确定其长度为5
c# 数组反序列化问题
我试了半天终于找到问题了,下面这个串就能成功了:
"[ ["/img\\yangban\\a\\fec9f4058e00881f_a.jpg","1"],["/img\\yangban\\a\\fec9f4058e00881f_a.jpg","1"] ]"
斜杠对josn对象本身也会把它作为转意符来看待的,所以如果你测试返序列一个字符串常量的话就要4个斜杠了,先由c#转换为两个斜杠愿意字符,然后再由josn转换为一个斜杠愿意字符。