frenchie
frenchie

Reputation: 52017

asp.net json serializer adding backslash "\" to my properties

I have an object model that looks like this:

public class MyObjectModel
{
  public int1 {get;set;}
  public int2 {get;set;}

  [ScriptIgnore]
  public int3 {get;set;}
}

In my code, I write this:

MyObjectModel TheObject  = new MyObjectModel();

TheObject = LoadFromQuery(); //populates the properties using a linq-to-sql query

JavaScriptSerializer MyObjectSerializer = new JavaScriptSerializer();

string TheObjectInJson = MyObjectSerializer.Serialize(TheObject);

When I look at the json string TheObjectInJson, it comes out looking like this:

"{\"int1\":31,\"int2\":5436}"

The serializer adds a backslash to each property. I tried adding and removing the [Serializable] attribute above the class definition but to no avail.

Any suggestions why this is happening?

Thanks.

Upvotes: 6

Views: 5239

Answers (2)

Ricardi Hamilton
Ricardi Hamilton

Reputation: 21

In your controller return the type of your object (not as a string!) as a JsonResult, ie:

[HttpGet]
        public JsonResult<MyObjectModel> GetMyObject()
        { 
            var theObject = LoadFromQuery(); //populates the properties (however)
            return Json(theObject);
        }

Upvotes: 0

Joshua
Joshua

Reputation: 8212

That should be correct. When sending JSON back to the browser, all property names must be in quotes. The backslashes you see are Visual Studio escaping the strings when viewing them (I hope, you didn't mention when you're seeing this).

If you actually send that data back out on the wire it should come across as

{"int1": 31, "int2":5436}

which is proper JSON notation.

See Wikipedia for an example of JSON notation.

Upvotes: 9

Related Questions