将列表转换为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)
{
}

我试着用逗号和引号来附加这个方法,但还没有成功。

谢谢你的建议。

将列表转换为json格式-一种简单快捷的方法

我使用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);
}
相关文章: