Comments (3)
I think a unit test (piece of code) that reproduces the issue would help here, to ensure specifics of how characters are escaped in code.
Also: which Jackson version is this with?
from jackson-dataformats-text.
Thank you for the quick response!
Sure, a unit test to reproduce the issue:
@Test
public void escapeCharAndNullValueConflict() throws IOException {
String csv = "id,value\n" +
"1,\\N";
InputStream in = new ByteArrayInputStream(csv.getBytes(StandardCharsets.UTF_8.name()));
CsvSchema schema = CsvSchema
.emptySchema()
.withHeader()
.withColumnSeparator(',')
.withEscapeChar('\\')
.withNullValue("\\N");
MappingIterator<ObjectNode> it =
new CsvMapper().readerFor(ObjectNode.class).with(schema).readValues(in);
ObjectNode row = it.nextValue();
assertThat(row.get("value"), is(nullValue()));
}
which fails with:
Expected: is null
but: was <"N">
java.lang.AssertionError:
Expected: is null
but: was <"N">
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
at org.junit.Assert.assertThat(Assert.java:865)
at org.junit.Assert.assertThat(Assert.java:832)
We use Jackson v2.8.8.
from jackson-dataformats-text.
Hmmh. I am not 100% sure what the logic should be, and due to the way tokenization is done it may be that this is considered feature, not bug. The problem is that replacement of null value is higher level operation and occurs after tokenization; escape characters are, however, handled during tokenization.
But I can see why this may be problematic so I will keep this open to see if handling could be improved.
from jackson-dataformats-text.
Related Issues (20)
- Update to SnakeYAML 2.1
- support for StreamReadConstraints (max name, document lengths)
- Parse YAML Keys with dots as dereferenced Map HOT 5
- Query on Jackson-dataformat-yaml usage HOT 2
- Missing Copyright information HOT 2
- Exception when attempting to use `ObjectMapper.readValues<T>(parser).readAll()` when parser is pointing to `START_ARRAY` HOT 5
- (yaml) Minor parsing validation miss: tagged as `int`, exception on underscore-only values
- `BigInteger` and `BigDecimal` are quoted if `CsvGenerator.Feature.ALWAYS_QUOTE_STRINGS` enabled
- Allow configuring Array value "wrappers" (like `[` and `]`) for `CsvSchema`
- `YAMLParser` throws unexpected `NullPointerException` in certain number parsing cases
- Yaml keys starting with number are being double quoted when mapper.writeValue() HOT 1
- Yaml Output differs from Json Output for Subtypes HOT 4
- INI Support HOT 4
- Unexpected `NumberFormatException` in `YAMLParser`
- Support max Read/Write nesting depth limits (`StreamReadConstraints`/`StreamWriteConstraints`) for YAML HOT 1
- Nesting objects within other objects (in YAML) HOT 1
- Weird issue with dates HOT 2
- Snakeyaml version used produces java.lang.NoSuchMethodError HOT 2
- Pkl support HOT 3
- TOML `TomlParserTest#float` fails on master (3.0) HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from jackson-dataformats-text.