Comments (5)
A possible workaround is to define an ObjectWriter
for B inside your AJsonSerializer
and to retrieve the underlying serializer.
public class AJsonSerializer extends JsonSerializer {
static interface BJsonWriter extends ObjectWriter<B> {}
private static final AJsonSerializer INSTANCE = new AJsonSerializer();
private final JsonSerializer<B> bJsonSerializer;
public static AJsonSerializer getInstance() {
return INSTANCE;
}
private AJsonSerializer() {
this.bJsonSerializer = (GWT.<AbstractObjectWriter>create( BJsonWriter.class )).getSerializer();
}
@Override
protected void doSerialize( JsonWriter writer, A value, JsonSerializationContext ctx, JsonSerializerParameters params ) {
writer.beginObject();
writer.name( "b" );
writer.value(bJsonSerializer.serialize( writer, value.getB(), ctx, params);
writer.endObject();
}
}
A bit more background about this issue : #40
I may add some factory interface where you could define all the serializer/deserializer you need.
from gwt-jackson.
Can I ask why you need to define a custom serializer for your type A ?
You couldn't achieve it with annotations ?
from gwt-jackson.
Wow thanks, that was what I was looking for. This works (except I had to use ObjectWriter<B> instead of JsonWriter<B>).
The reason for not using the annotations is, that the classes are in other older shared library projects, which must not have JSON annotations, as that projects are used elsewhere with custom build scripts, etc... So it's quite a requirement to leave the classes intact and not using additional dependencies.
I am very grateful, thanks.
from gwt-jackson.
Ah right, fixed the example to use ObjectWriter
. I didn't test it :p
You can use mixin annotation when you can't modify the class.
from gwt-jackson.
The problem is that the classes don't have proper getters and setters (non-getter methods start with "get", but must not be called outside of their context, as they throw exceptions), but the fields are private or protected, so they cannot be serialized by the standard serializer. It's related to my previous issue.
from gwt-jackson.
Related Issues (20)
- HashMap <SimplePojo, Set <Integer>> ...does not serialize into Json HOT 2
- No source code is available for type com.fasterxml.jackson.databind.ObjectMapper; did you forget to inherit a required module? HOT 3
- Support for java.util.Optional HOT 1
- Expected a string but was BEGIN_OBJECT at line 1 column 2 HOT 1
- Please REVERT the dependency on Jackson 2.9.*, Jackson 2.9.* is NOT compatible with GWT. HOT 2
- Support for @JsonCreator(mode = Mode.DELEGATING)
- Custom deserializer compilation error
- Getter returning Optional<T> of nullable T causing compilation error HOT 2
- GWT 2.6.1 + GwtJackson 0.15.3 HOT 3
- JsonSerializationContext.Builder override not working as expected
- Error:GWT Compiler: No source code is available for type com.fasterxml.jackson.annotation.JsonTypeInfo.As; did you forget to inherit a required module?
- JsonTypeInfo defaultImpl attribute not working HOT 1
- Update jackson dependency to 2.9.8
- Update javapoet dependency to 1.11.1
- Support for JsonFormat.Feature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE
- Annotations on Java8 default interface are ignored HOT 1
- Can't figure out the stackoverflow I am getting
- More (de)serialization customization (JsonFilter or equivalent)
- Double.NaN / NEGATIVE_INFINITY / POSITIVE_INFINITY - Numeric values must be finite, but was
- Many compile problems
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gwt-jackson.