我只是使用XmlWriter创建了一些XML,以便在HTTP响应中发回。如何创建JSON字符串?我猜你会使用stringbuilder来构建JSON字符串,然后将响应格式化为JSON?
当前回答
使用Newtonsoft。Json让它变得更简单:
Product product = new Product();
product.Name = "Apple";
product.Expiry = new DateTime(2008, 12, 28);
product.Price = 3.99M;
product.Sizes = new string[] { "Small", "Medium", "Large" };
string json = JsonConvert.SerializeObject(product);
文档:序列化和反序列化JSON
其他回答
包括:
使用System.Text.Json;
然后像这样序列化你的object_to_serialize: JsonSerializer.Serialize (object_to_serialize)
这个代码片段使用了。net 3.5中System.Runtime.Serialization.Json中的DataContractJsonSerializer。
public static string ToJson<T>(/* this */ T value, Encoding encoding)
{
var serializer = new DataContractJsonSerializer(typeof(T));
using (var stream = new MemoryStream())
{
using (var writer = JsonReaderWriterFactory.CreateJsonWriter(stream, encoding))
{
serializer.WriteObject(writer, value);
}
return encoding.GetString(stream.ToArray());
}
}
DataContractJSONSerializer将像XMLSerializer一样简单地为您做所有事情。在web应用程序中使用它很简单。如果你正在使用WCF,你可以用一个属性指定它的用途。DataContractSerializer系列也非常快。
您可以使用JavaScriptSerializer类来构建一个有用的扩展方法。
文章中的代码:
namespace ExtensionMethods
{
public static class JSONHelper
{
public static string ToJSON(this object obj)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
return serializer.Serialize(obj);
}
public static string ToJSON(this object obj, int recursionDepth)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
serializer.RecursionLimit = recursionDepth;
return serializer.Serialize(obj);
}
}
}
用法:
using ExtensionMethods;
...
List<Person> people = new List<Person>{
new Person{ID = 1, FirstName = "Scott", LastName = "Gurthie"},
new Person{ID = 2, FirstName = "Bill", LastName = "Gates"}
};
string jsonString = people.ToJSON();
这个库非常适合用于c#中的JSON
http://james.newtonking.com/pages/json-net.aspx
推荐文章
- 新建T()
- Ajax会调用什么样的响应,比如'for (;;);{json data}的意思?
- 如何将枚举绑定到WPF中的组合框控件?
- 在JavaScript中将JSON字符串解析为特定对象原型
- 拒绝访问该路径
- Visual Studio - Resx文件默认“内部”为“公共”
- 使用linq转换列表到字典,不用担心重复
- 单元测试:日期时间。现在
- 什么是回调?
- 返回匿名类型的结果?
- 何时使用IList,何时使用List
- ConfigurationManager。AppSettings在.NET Core 2.0中可用?
- 在c#的控制台应用程序中使用'async
- 使用Jackson将JSON字符串转换为漂亮的打印JSON输出
- 在单元测试中设置HttpContext.Current.Session