FasterXML / FasterXML/jackson-dataformats-text
`CsvMapper` does not respect `CsvSchema.ColumnType` when using `@JsonAnySetter`
- Ngôn ngữ chính
- Java
- Star
- 455
- Fork
- 164
- Merge trung bình
- 6 ngày 10 giờ
- Pull request đã merge (30 ngày)
- 2
Mô tả
Variation of the AnySetterTest.java test...
Following code fails at `assertEquals(true, entry.stuff.get("extra"))` because value in `stuff` is a string, not a boolean. Expected that setting `CsvSchema.ColumnType.BOOLEAN` on the schema would cause mapper to pass a boolean to `@JsonAnySetter` method:
public static void testManualSchemaWithAnySetter() throws Exception
{
CsvMapper mapper = new CsvMapper();
CsvSchema.Builder schemaBuilder = CsvSchema.builder()
.addColumn("name", CsvSchema.ColumnType.STRING)
.addColumn("age", CsvSchema.ColumnType.NUMBER)
.addColumn("gender", CsvSchema.ColumnType.STRING)
.addColumn("extra", CsvSchema.ColumnType.BOOLEAN);
CsvSchema schema = schemaBuilder.build().withHeader();
Entry entry = mapper.readerFor(Entry.class).with(schema).readValue(
"name,age,gender,extra\nBarbara,35,F,true\n");
assertEquals(35, entry.age);
assertEquals("F", entry.stuff.get("gender"));
assertEquals(true, entry.stuff.get("extra"));
assertEquals(2, entry.stuff.size());
}
Unchanged from original test:
static class Entry {
Map stuff = new LinkedHashMap();
public int age;
public String name;
@JsonAnySetter
public void set(String key, Object value) {
// for secondary test, where name remains empty:
if (key.isEmpty()) {
key = String.valueOf(stuff.size());
}
stuff.put(key, value);
}
}
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Đánh giá
Issue này chưa được đánh giá.