Код: Выделить всё
{
"name": "The name",
"description": "The description"
}
< /code>
Я хочу добавить карту с локализацией рядом с полем < /p>
{
"name": "The name",
"name_l10n": {
"en": "The name",
"fr": "Le nom"
}
"description": "The description.",
"description_l10n": {
"en": "The description.",
"fr": "La description nom."
}
}
Код: Выделить всё
public class MyFancyClass {
private String name;
private String description;
// ... getters and setters
}
Код: Выделить всё
public class MyFancyClass {
private LocalizedField name;
private LocalizedField description;
// ... getters and setters
}
< /code>
Класс, который представляет поле с локализацией, очень Straigforward: < /p>
public class LocalizedField {
private String value;
private Map value_l10n;
// ... getters and setters
Код: Выделить всё
@Override
public void serialize(LocalizedField field, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonGenerationException {
String value = field.getValue();
if (value != null && !value.trim().isEmpty()) {
jgen.writeStringField(name, value);
}
LocalizedString l10n = field.getValue_l10n();
if (l10n != null && !l10n.isEmpty()) {
jgen.writeFieldName(name + "_l10n");
jgen.writeStartObject();
for (Map.Entry e : l10n.entrySet()) {
jgen.writeStringField(e.getKey(), e.getValue());
}
jgen.writeEndObject();
}
}
.
Код: Выделить всё
public LocalizedField deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
LocalizedField result = new LocalizedField();
JsonNode node = ctxt.readTree(p); // (1) only receives a string
result.setValue(getText(node, name));
JsonNode i18n = node.get(name + "_i18n");
if (i18n != null && i18n.isObject()) {
// parse into map
// ...
}
return result.isEmpty() ? null : result;
}
Как это должно работать? Я хочу использовать этот локализованный на нескольких классах и составить его с соответствующим jpa infeddable.>
Подробнее здесь: https://stackoverflow.com/questions/796 ... ialization