将列表转换为json格式-一种简单快捷的方法
本文关键字:简单 一种 方法 转换 列表 json 格式 | 更新日期: 2023-09-27 17:59:27
假设我有一个对象MyObject,看起来像这样:
public class MyObject
{
int ObjectID {get;set;}
string ObjectString {get;set;}
}
我有一个MyObject的列表,我希望用字符串生成器将其转换为json字符串。我知道如何创建JavascriptConverter并通过传递列表并让转换器构建字符串来创建json字符串,但在这种特殊情况下,我希望避免开销,直接使用列表上带有foreach循环的json字符串:
StringBuilder JsonString = new StringBuilder();
foreach(MyObject TheObject in ListOfMyObject)
{
}
我试着用逗号和引号来附加这个方法,但还没有成功。
谢谢你的建议。
我使用JavaScript序列化类做了一些类似的事情:
using System.Web.Script.Serialization;
和:
JavaScriptSerializer jss = new JavaScriptSerializer();
string output = jss.Serialize(ListOfMyObject);
Response.Write(output);
Response.Flush();
Response.End();
3年的经验之后,我又回到了这个问题,并建议这样写:
string output = new JavaScriptSerializer().Serialize(ListOfMyObject);
一行代码。
对我来说,使用Newtonsoft.Json:是有效的
using Newtonsoft.Json;
// ...
var output = JsonConvert.SerializeObject(ListOfMyObject);
我会避免自己滚动,并使用其中一种:
System.Web.Script.JavascriptSerializer
或
JSON.net
两者都会做得很好:)
为什么要重新发明轮子?使用微软的json序列化程序或json等第三方库。NET
比起json.NET框架的json功能,我更喜欢使用linq。以下是如何将对象列表序列化为json。
List<MyObject> list = new List<MyObject>();
Func<MyObject, JObject> objToJson =
o => new JObject(
new JProperty("ObjectId", o.ObjectId),
new JProperty("ObjectString", o.ObjectString));
string result = new JObject(new JArray(list.Select(objToJson))).ToString();
您可以完全控制结果json字符串中的内容,只需查看代码就可以清楚地看到它。当然,您可以去掉Func<T1, T2>
声明,并直接在new JArray()
调用中指定此代码,但通过将此代码提取到Func<>
,可以更清楚地了解发生了什么以及如何将对象实际转换为json。您甚至可以将Func<>
存储在此方法之外的某种设置方法中(即在构造函数中)。
您可以使用return JsonConvert.SerializeObject(objName);并将其发送到前端
如果您使用WebApi,HttpResponseMessage是一种更优雅的方式
public HttpResponseMessage Get()
{
return Request.CreateResponse(HttpStatusCode.OK, ListOfMyObject);
}