With your edit, referring to private fields among other things: frankly you're stretching the feature-set of what any one serializer will offer. You can probably use extension APIs to do some of it, but it'll be a lot of work, and not 100%. You will spend a lot if time fighting the serializers and debugging.
In such cases, there is a much better solution: write a set of DTO types completely unrelated to your domain entities. Serialize/deserialize the DTOs - feel free go annotate the DTOs like there is no tomorrow: their single purpose is to express serialization intent. Then just map to/from the DTO and entity types.
This way, you get the best if both worlds. The serializers are happy with the DTOs (and you can shape the data as you want, by tweaking the DTO types), and your domain entities are squeaky clean, completely unaware of serialization concerns.