私のサイトで Jackson を使用して、JSON を必要とするグラフ作成ツールで使用するオプション文字列を作成しています。たとえば、私は
public class Chart {
Integer zIndex = 3;
public Integer getZIndex() {
return zIndex;
}
}
それで、私はチャートでJacksonのobjectMapperを使用し、出力は {"zindex":3} です.ここで私の問題は、チャート作成ツールが「zindex」を受け入れず、キャメルケースの「zIndex」を主張することです. 出力でこれに適切な名前を付けるにはどうすればよいですか? @JsonProperty("zIndex") を試してみましたが、これにより、出力に zindex と zIndex の 2 つのコピーが生成され、紛らわしく見苦しくなります。また、lombok を使用してゲッターを生成しています。
私は試した:
public class FieldNamingStrategy extends PropertyNamingStrategy {
@Override
public String nameForField(MapperConfig<?> config, AnnotatedField field, String defaultName) {
return field.getName();
}
}
そして objectMapper.setPropertyNamingStrategy()
しかし、これはうまくいきませんでした。
私の構成は次のようになります
String json = null;
StringWriter stringWriter = new StringWriter();
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL);
//TODO: figure this out
objectMapper.setPropertyNamingStrategy(new FieldNamingStrategy());
try {
final JsonGenerator jsonGenerator = objectMapper.getJsonFactory().createJsonGenerator(stringWriter);
jsonGenerator.useDefaultPrettyPrinter();
objectMapper.writeValue(jsonGenerator, object);
json = stringWriter.toString();