package com.jsoniter.demo;
import com.jsoniter.JsonIterator;
import com.jsoniter.StaticCodeGenerator;
import com.jsoniter.annotation.JsoniterAnnotationSupport;
import com.jsoniter.spi.CodegenConfig;
import com.jsoniter.spi.Decoder;
import com.jsoniter.spi.JsoniterSpi;
import com.jsoniter.spi.TypeLiteral;
import java.io.IOException;
import java.util.List;
import java.util.Map;
public class DemoCodegenConfig implements CodegenConfig {
@Override
public void setup() {
JsoniterAnnotationSupport.enable();
// register custom decoder or extensions before codegen
// so that we doing codegen, we know in which case, we need to callback
JsoniterSpi.registerPropertyDecoder(User.class, "score", new Decoder.IntDecoder() {
@Override
public int decodeInt(JsonIterator iter) throws IOException {
return Integer.valueOf(iter.readString());
}
});
}
@Override
public TypeLiteral[] whatToCodegen() {
return new TypeLiteral[]{
// generic types, need to use this syntax
new TypeLiteral<List<Integer>>() {
},
new TypeLiteral<List<User>>() {
},
new TypeLiteral<Map<String, Object>>() {
},
// array
TypeLiteral.create(int[].class),
// object
TypeLiteral.create(User.class)
};
}
public static void main(String[] args) throws Exception {
StaticCodeGenerator.main(new String[]{DemoCodegenConfig.class.getCanonicalName()});
}
}