There is an API which I don't control, but whose output I need to consume with C#, preferably using JSON.Net.
Here's an example response:
[
{
"media_id": 36867,
"explicit": 0
}
]
I had planned to have a class like so:
class Media {
public int media_id;
public int explicit;
}
And to deserialize:
var l = JsonConvert.DeserializeObject<List<Media>>(s);
Unfortunately, "explicit" is a C# keyword, so this can't compile.
My next guess is to modify the class:
class Media {
public int media_id;
public int explicit_;
}
... and somehow map the response attributes to the C# attributes.
How should I do that, or am I totally going at this the wrong way?
Failing that, I'd be OK to just plain ignore the "explicit" in the response, if there's a way to do that?
C# lets you define members with reserved word names (for interoperability cases exactly like this) by escaping them with an @, e.g.,
class Media {
public int media_id;
public int @explicit;
}
Not sure how this plays with JSON.Net, but I would imagine it should work (since the @ is an escape and not actually part of the field name).
Haven't used JSON.Net, but judging by the docs here, I figure you just need to do what you'd do with XmlSerialization: Add an attribute to tell how the JSON property should be called:
class Media {
[JsonProperty("media_id")]
public int MediaId;
[JsonProperty("explicit")]
public int Explicit;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With