使用JSON.Net进行C#到JSON的序列化

35

我有一个 C# 的 List,它长这样:

var reqUsers = from user in users
    select new
    {
        username = user.username,
        firstName = user.firstName,
        lastName = user.lastName,
        email = user.email
    };

我使用下面的代码将对象转换/序列化为JSON(Newtonsoft.JSON):

var json = JsonConvert.SerializeObject(reqUsers);

使用上述代码,我会得到这样一个JSON字符串:

[{ username: "alan", firstName: "Alan", lastName: "Johnson", email: "alan@test.com" },
 { username: "allison", firstName: "Allison", lastName: "House", email: "al@test.com" },
 { username: "ryan", firstName: "Ryan", lastName: "Carson", email: "ryan@test.com" } ]

不过这是我需要获取的内容:因为我正在使用handlebars模板 -

var testdata = {
  users: [
  { username: "alan", firstName: "Alan", lastName: "Johnson", email: "alan@test.com" },
  { username: "allison", firstName: "Allison", lastName: "House", email: "al@test.com" },
  { username: "ryan", firstName: "Ryan", lastName: "Carson", email: "ryan@test.com" } ]

如何使用序列化器将JSON数组命名为上述名称?

2个回答

80

使用:

var json = JsonConvert.SerializeObject(new { users = reqUsers });

2
在JS中访问joson时,我不得不使用'var thejson = @Html.Raw(json);'来避免引号问题。 - SeanMC

2
使用:
var json= new JavaScriptSerializer().Serialize(reqUsers);

1
这是使用System.Web.Script.Serialization命名空间,而不是原始帖子使用的Netwonsoft.Json。这是一个有效的选择。 - DesertFoxAZ
谢谢,这对于对象中的字节数组很好。防止字节数组转换为Base64。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接