Is it possible to use JsonProperty annotation to map a nested Json property to a non-nested .NET member? Say you\'ve got some Json like this:
{
\"id\":9
From personal experience, I struggled before trying to re-use my entities for communication (JSON, XML ... etc.) but after paying closer attention to existing patterns, I found out that having "data transfer objects" in addition to internal / storage entities that you already have will liberate my communication models and the only cost I paid was to accept doing manual, yet straight-forward, effort of manually-coded conversion between the two.
If you'd rather stick to what you have and performance is no big deal, then .NET reflection is your friend.
For really complex JSON Situations I really like the manual mapping approach Demis Bellot has taken with ServiceStack.Text. This allows me to pass an httpResponse.Content to a JsonConverter.Convert(string json) method.
This has the added benefit of keeping your model objects squeaky clean.
var place = JsonObject.Parse(JsonCentroid)
.Object("place")
.ConvertTo(x => new Place
{
WoeId = x.Get<int>("woeid"),
PlaceTypeName = x.Get(""),
PlaceTypeNameAttrs = x.Object("placeTypeName attrs"),
Name = x.Get("Name"),
BoundingBox = x.Object("boundingBox")
.ConvertTo(y => new BoundingBox
{
SouthWest = y.Object("southWest").ConvertTo(toCentroid),
NorthEast = y.Object("northEast").ConvertTo(toCentroid)
}),
});
You can see the full test here.
I Think it's better if you won't flatten it at all. There are multiple reasons why NOT to do so:
The best option for you is to read a bit about data crawling using JSon - here. Very easy and useful.
After - if you'll still insist, you can wrap it in a nice new class.