我有一个对象模型,看起来像这样:
public MyObjectInJson
{
public long ObjectID {get;set;}
public string ObjectInJson {get;set;}
}
属性objectjson是一个包含嵌套列表的对象的已序列化版本。目前,我手动序列化myobjectjson的列表,就像这样:
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替换这种危险的代码,并得到相同的结果。
我该怎么做呢?
我尝试了这里的其他答案来序列化POST请求的参数,但我的后端不喜欢这样一个事实,即我正在发送数组的字符串版本。我不想总是检查参数的类型是否为字符串并将其转换为数组。
我使用的是Json。NET(现在已内置到c#中),我将List转换为一个数组,并让转换器处理其余的工作。
public class MyObjectInJson
{
public long ID;
public OtherObject[] array;
}
可以使用List . toarray()将List转换为数组;
最后使用JsonConvert,你可以把整个对象变成一个字符串:
string jsonString = JsonConvert.SerializeObject(objectInJson);
希望这能帮助到其他人。
我尝试了这里的其他答案来序列化POST请求的参数,但我的后端不喜欢这样一个事实,即我正在发送数组的字符串版本。我不想总是检查参数的类型是否为字符串并将其转换为数组。
我使用的是Json。NET(现在已内置到c#中),我将List转换为一个数组,并让转换器处理其余的工作。
public class MyObjectInJson
{
public long ID;
public OtherObject[] array;
}
可以使用List . toarray()将List转换为数组;
最后使用JsonConvert,你可以把整个对象变成一个字符串:
string jsonString = JsonConvert.SerializeObject(objectInJson);
希望这能帮助到其他人。
如果使用。net Core 3.0或更高版本;
默认使用内置的System.Text.Json解析器实现。
e.g.
using System.Text.Json;
var json = JsonSerializer.Serialize(aList);
或者,其他不太主流的选项,如Utf8Json解析器和Jil:如果你真的需要它们,它们可能会提供更好的性能,但你需要安装它们各自的包。
如果使用。net Core 2.2或更早版本;
默认使用Newtonsoft JSON。Net作为您的首选JSON解析器。
e.g.
using Newtonsoft.Json;
var json = JsonConvert.SerializeObject(aList);
您可能需要先安装软件包。
PM> Install-Package Newtonsoft.Json
欲了解更多细节,请参阅并为这一信息来源的答案投票。
仅供参考,这是许多年前最初的答案;
// you need to reference System.Web.Extensions
using System.Web.Script.Serialization;
var jsonSerialiser = new JavaScriptSerializer();
var json = jsonSerialiser.Serialize(aList);