FasterXML / FasterXML/jackson-dataformats-text

`CsvMapper` does not respect `CsvSchema.ColumnType` when using `@JsonAnySetter`

Đang mở
#60 2 bình luận 0 reaction 0 người được giao Xem trên GitHub
csv
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á.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.