35

I have a C# List which looks like this:

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

I use the below to convert / serialize to JSON ( Newtonsoft.JSON ):

var json = JsonConvert.SerializeObject(reqUsers);

With the above code I get a json string like this:

[{ 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" } ]

however here is what I need to get : since I am using handlebars templating -

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" } ]

How can use the Serializer to name the JSON array as above ?

devdigital
  • 34,151
  • 9
  • 98
  • 120
Madhuri Mittal
  • 513
  • 1
  • 7
  • 10

2 Answers2

80

Use:

var json = JsonConvert.SerializeObject(new { users = reqUsers });
devdigital
  • 34,151
  • 9
  • 98
  • 120
  • 2
    When accessing the joson in the JS I had to use 'var thejson = @Html.Raw(json);' to not have issues with the quotes – SeanMC Sep 08 '17 at 14:27
1

use:

var json= new JavaScriptSerializer().Serialize(reqUsers);
Hithesh
  • 441
  • 4
  • 9
  • 1
    This is using the System.Web.Script.Serialization namespace instead of Netwonsoft.Json as the original poster was using. It's a valid option however. – DesertFoxAZ Oct 09 '17 at 22:41