0

重複の可能性:
シリアル化および逆シリアル化中の JSON プロパティの名前が異なる

私のサイトで 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();

4

1 に答える 1

0

Jackson の最新バージョンを使用していることを確認してください: 1.9 では、プロパティの処理が改善されました。これにより、注釈が 1 つだけに追加された場合でも機能します。

または、それができない場合は、@JsonPropertygetter とフィールドの両方に注釈を追加してください。

あなたの主な問題は、名前自体が「非準拠」であることです。つまり、ピースが一致しない可能性があります。

于 2012-08-02T17:47:18.197 に答える