2013-04-05 55 views
30

我有一个C#列表看起来像这样:C#以JSON序列化使用JSON.Net

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: "[email protected]" }, 
{ username: "allison", firstName: "Allison", lastName: "House", email: "[email protected]" }, 
{ username: "ryan", firstName: "Ryan", lastName: "Carson", email: "[email protected]" } ] 

但这里是我需要得到:因为我用的把手templatin g -

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

如何使用Serializer来命名JSON数组?如上所述?

回答

67

用途:

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

工作就像一个魅力!谢谢你...... – 2013-04-05 21:10:12

+0

当访问JS中的joson时,我不得不使用'var thejson = @ Html.Raw(json);'没有引号问题 – SeanKPS 2017-09-08 14:27:39

1

使用:

var json= new JavaScriptSerializer().Serialize(reqUsers); 
+0

这是使用System.Web.Script.Serialization命名空间而不是Netwonsoft.Json作为原始海报使用的。然而,这是一个有效的选择。 – DesertFoxAZ 2017-10-09 22:41:28