With the JSON defined as it is, in order to deserialize it as an object, I'd need to create a property on my class called "event", which is a C# keyword. Is there another way to tell it what the field names will be?
Here's an example of the JSON:
{ event: 123 data: {"data":"0D0401","ttl":"60","published_at":"2014-04-16T18:04:42.446Z","id":"48ff6f065067555031192387"} }
Here are my classes that won't compile because of the keyword:
public class Event
{
public int event { get; set; }
public EventDetail data { get; set; }
}
public class EventDetail
{
public string data { get; set; }
public string ttl { get; set; }
public DateTime published_at { get; set; }
public string id { get; set; }
}
Try using the
[DataContract(Name = "@event")]
attribute on the relevant property. Then it will (de)serialize correctly, and you can rename the property so that it compiles.Change
to this
This tip shows the quirks involved with escaping in C#:
(equivalent to \t)) - literal string escaping:
I was able to just capitalize the "e", and it still works. Looks like the parsing mechanism is case-insensitive.