views:

109

answers:

2

Given the following class,

public class Result
{      
    public bool Success
    {
        get;
        set;
    }

    public string Message
    { 
        get; 
        set; 
    }
}

I am returning one of these in a Controller action like so,

return Json(new Result() { Success = true, Message = "test"})

However my client side framework expects these properties to be lowercase success and message. Without actually having to have lowercase property names is that a way to acheive this thought the normal Json function call?

+2  A: 

There's no way to achieve this without actually renaming the properties in your class. You could use an anonymous type:

return Json(new { success = true, message = "test" });
Darin Dimitrov
I suspected this might be the case
kouPhax
+1  A: 

The way to achieve this is to implement a custom JsonResult like here

http://www.marcdormey.com/index.php/archives/300

And use an alternative serialiser such as JSON.NET

http://json.codeplex.com/

Which supports this sort of behaviour e.g.

Product product = new Product
                    {
                      ExpiryDate = new DateTime(2010, 12, 20, 18, 1, 0, DateTimeKind.Utc),
                      Name = "Widget",
                      Price = 9.99m,
                      Sizes = new[] {"Small", "Medium", "Large"}
                    };

string json = 
  JsonConvert.SerializeObject(
    product,
    Formatting.Indented,
    new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }
  );

//{
//  "name": "Widget",
//  "expiryDate": "\/Date(1292868060000)\/",
//  "price": 9.99,
//  "sizes": [
//    "Small",
//    "Medium",
//    "Large"
//  ]
//}
kouPhax