我有一个对象模型,看起来像这样:
public MyObjectInJson
{
public long ObjectID {get;set;}
public string ObjectInJson {get;set;}
}
属性ObjectInJson
是一个已经序列化的版本,一个包含嵌套列表的对象。目前,我手动序列化MyObjectInJson
列表,如下所示:
StringBuilder TheListBuilder = new StringBuilder();
TheListBuilder.Append("[");
int TheCounter = 0;
foreach (MyObjectInJson TheObject in TheList)
{
TheCounter++;
TheListBuilder.Append(TheObject.ObjectInJson);
if (TheCounter != TheList.Count())
{
TheListBuilder.Append(",");
}
}
TheListBuilder.Append("]");
return TheListBuilder.ToString();
我想知道我是否可以用JavascriptSerializer
替换这种危险的代码,并得到相同的结果。我该怎么做呢?
发布于 2012-02-02 18:46:27
如果使用.Net Core3.0或更高版本;
默认使用内置的System.Text.Json
解析器实现。
例如:
using System.Text.Json;
var json = JsonSerializer.Serialize(aList);
或者,也可以使用其他不太主流的选项,如Utf8Json解析器和Jil:如果您确实需要superior performance,可以使用这些选项,但是,您需要安装它们各自的包。
如果使用.Net Core2.2或更早版本卡住了;
默认使用Newtonsoft JSON.Net作为您的首选JSON解析器。
例如:
using Newtonsoft.Json;
var json = JsonConvert.SerializeObject(aList);
您可能需要先安装该软件包。
PM> Install-Package Newtonsoft.Json
有关更多详细信息,请访问see and upvote the answer that is the source of this information。
仅供参考,这是许多年前的原始答案;
// you need to reference System.Web.Extensions
using System.Web.Script.Serialization;
var jsonSerialiser = new JavaScriptSerializer();
var json = jsonSerialiser.Serialize(aList);
发布于 2016-02-17 17:29:48
public static string JSONSerialize<T>(T obj)
{
string retVal = String.Empty;
using (MemoryStream ms = new MemoryStream())
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
serializer.WriteObject(ms, obj);
var byteArray = ms.ToArray();
retVal = Encoding.UTF8.GetString(byteArray, 0, byteArray.Length);
}
return retVal;
}
发布于 2020-11-12 20:14:15
如果您在Json核心API操作的上下文中执行此操作,则会隐式完成到asp.Net的转换。
[HttpGet]
public ActionResult Get()
{
return Ok(TheList);
}
https://stackoverflow.com/questions/9110724
复制相似问题