这篇文章主要围绕泛型/JSONJavaScriptSerializerC#和java泛型展开,旨在为您提供一份详细的参考资料。我们将全面介绍泛型/JSONJavaScriptSerializerC#的
这篇文章主要围绕泛型/ JSON JavaScriptSerializer C#和java泛型展开,旨在为您提供一份详细的参考资料。我们将全面介绍泛型/ JSON JavaScriptSerializer C#的优缺点,解答java泛型的相关问题,同时也会为您带来.Net C# 泛型序列化和反序列化JavaScriptSerializer、ASP.NET C#使用JavaScriptSerializer实现序列化与反序列化得到JSON、asp.net – 超过了JavaScriptSerializer.MaxJsonLength.处理这个的最佳做法是什么?、C# .net core 使用JsonConvert替代JavaScriptSerializer的实用方法。
本文目录一览:- 泛型/ JSON JavaScriptSerializer C#(java泛型)
- .Net C# 泛型序列化和反序列化JavaScriptSerializer
- ASP.NET C#使用JavaScriptSerializer实现序列化与反序列化得到JSON
- asp.net – 超过了JavaScriptSerializer.MaxJsonLength.处理这个的最佳做法是什么?
- C# .net core 使用JsonConvert替代JavaScriptSerializer
泛型/ JSON JavaScriptSerializer C#(java泛型)
我正在使用VS2008Express在NET3.5SP1中构建winForms应用程序。我正在尝试使用System.Web.Script.Serialization库反序列化对象。
错误是:数组反序列化不支持类型’jsonWinForm.Category’。
干杯!
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Web;using System.Net;using System.IO;using System.Web.Script.Serialization;namespace jsonWinForm { public class Category { public int categoryid; public string name; public int serverimageid; public DateTime dateuploaded; public bool enabled; } public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { using (WebClient client = new WebClient()) { //manipulate request headers (optional) client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"); string targetUri = "http://www.davemateer.com/ig/genius/category.php"; //execute request and read response as string to console using (StreamReader reader = new StreamReader(client.OpenRead(targetUri))) { string s = reader.ReadToEnd(); textBox1.Text = s; Category cat = new Category(); JavaScriptSerializer serializer = new JavaScriptSerializer(); // this fails with a //Type ''jsonWinForm.Category'' is not supported for deserialization of an array. serializer.Deserialize<Category>(s); } } } }}
答案1
小编典典很高兴您发现自己的错误。如果您正在寻找用于JSON序列化的其他工具,则可能需要尝试JSON.Net。
.Net C# 泛型序列化和反序列化JavaScriptSerializer
项目添加引用System.Web.Extensions


/// <summary>
/// 泛型序列化
/// </summary>
public class JsonHelper
{
/// <summary>
/// JSON序列化
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="t"></param>
/// <returns></returns>
static public string ScriptSerialize<T>(T t)
{
JavaScriptSerializer js = new JavaScriptSerializer();
return js.Serialize(t);
}
/// <summary>
/// JSON反序列化
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="jsonSring"></param>
/// <returns></returns>
static public T ScriptDeserialize<T>(string jsonSring)
{
JavaScriptSerializer js = new JavaScriptSerializer();
return js.Deserialize<T>(jsonSring);
}
}
ASP.NET C#使用JavaScriptSerializer实现序列化与反序列化得到JSON
在JavaScriptSerializer中,我们可以看到下面可以使用的方法或者构造函数,它们都是实例方法:
Member | Description |
---|---|
JavaScriptSerializer() | 构造函数,用于创建一个新的JavaScriptSerializer对象,不指定JavaScriptTypeResolver |
JavaScriptSerializer(JavaScriptTypeResolver) | 构造函数,用于创建一个新的JavaScriptSerializer对象,并使用指定的JavaScriptTypeResolver来映射特定类型与标识字符串。 |
ConvertToType<T>(Object) | 将给定对象转化成类型T。 |
Deserialize<T>(String) | 将JSON字符串转化为类型T。 |
DeserializeObject(String) | 将JSON字符串转化为一个对象。 |
MaxJsonLength | 获取或者设置序列化时能够接受的JSON字符串的最大长度。 |
RecursionLimit | 获取或者设置在反序列化JSON字符串时递归的最大深度。 |
RegisterConverters(IEnumerable<JavaScriptConverter>) | 注册序列化过程中使用的JavaScriptConveter对象。 |
Serialize(Object) | 将一个对象序列化成JSON字符串。 |
Serialize(Object, StringBuilder) | 将一个对象序列化到一个StringBuilder中。 |
C#代码:

//类
public class UserInfo
{
public Int Id { get; set; }
public String UserName { get; set; }
public DateTime Time { get; set; }
}
//代码
public void js()
{
//源数据
UserInfo info = new UserInfo();
info.Id = 1;
info.UserName = "张三";
info.Time = DateTime.Now;
//初始化
System.Web.Script.Serialization.JavaScriptSerializer jss = new System.Web.Script.Serialization.JavaScriptSerializer();
//序列化,strJson就是josn串
String strJson = jss.Serialize(info);//输出结果:{"Id":1,"UserName":"张三","Time":"\/Date(1297950721668)\/"}
//方式一:反序列化,转成model
UserInfo info2 = jss.Deserialize<UserInfo>(strJson);
//方式二:JavaScriptObject
JavaScriptObject jObject = JavaScriptConvert.DeserializeObject(strJson) as JavaScriptObject;
string UserName = jObject["UserName"].ToString();
string Time = jObject["Time"].ToString();//时间格式需要特殊处理
Time = Time.Replace("/Date(","").Replace(")/","");//替换掉/Date(),只保留里面的数字
Time = ConvertJsonDateToDateString(Convert.ToInt64(Time));
//如果josn里还包含josn,那么就需要这么写。
JavaScriptArray JsonData = (JavaScriptArray)jObject["records"];
if (JsonData.Count > 0)
{
for (int m = 0; m < JsonData.Count; m++)
{
JavaScriptObject orderObj = (JavaScriptObject)JsonData[m];
}
}
}
/// <summary>
/// 将Json序列化的时间由/Date(1503996878)/转为字符串
/// </summary>
public string ConvertJsonDateToDateString(long Time)
{
string result = string.Empty;
DateTime dt = new DateTime(1970, 1, 1);
dt = dt.AddMilliseconds(Time);
dt = dt.ToLocalTime();
result = dt.ToString("yyyy/MM/dd HH:mm:ss");
return result;
}
asp.net – 超过了JavaScriptSerializer.MaxJsonLength.处理这个的最佳做法是什么?
以下是Web服务的相关代码段:
Dictionary<string,object> jsonValuePairs = new Dictionary<string,object>(); //add some data to the dictionary... return System.Web.Script.Serialization.JavaScriptSerializer.Serialize(jsonValuePairs);
解决方法
设置此问题是什么?
我每次都会通过多个xhr调用来处理数据的部分数据.
<system.web.extensions> <scripting> <webServices> <jsonSerialization maxJsonLength="500000"> </jsonSerialization> </webServices> </scripting> </system.web.extensions>
更新:默认大小为2097152,相当于4 MB的Unicode字符串数据.你真的要把这么多的数据发回给客户吗?如果这样,你需要看看应用程序设计,因为用户体验会慢而繁琐.
C# .net core 使用JsonConvert替代JavaScriptSerializer
.net core 中不存在System.Runtime.Serialization.Json与System.Web.Script.Serialization这两个namespace,因此也就不存在JavaScriptSerializer,所以在移植项目时,可以使用Newtonsoft.Json中的JsonConvert来替代。
代码:
//.net framework下
//JavaScriptSerializer serializer = new JavaScriptSerializer();
//var res = serializer.Serialize(YourObject);
//.net core 下使用Newtonsoft.Json
var res = JsonConvert.SerializeObject(YourObject);
今天关于泛型/ JSON JavaScriptSerializer C#和java泛型的讲解已经结束,谢谢您的阅读,如果想了解更多关于.Net C# 泛型序列化和反序列化JavaScriptSerializer、ASP.NET C#使用JavaScriptSerializer实现序列化与反序列化得到JSON、asp.net – 超过了JavaScriptSerializer.MaxJsonLength.处理这个的最佳做法是什么?、C# .net core 使用JsonConvert替代JavaScriptSerializer的相关知识,请在本站搜索。
本文标签: