You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "Andy Le (Jira)" <ji...@apache.org> on 2020/03/15 08:02:00 UTC
[jira] [Created] (AVRO-2775) JacksonUtils: exception when calling
toJsonNode()
Andy Le created AVRO-2775:
-----------------------------
Summary: JacksonUtils: exception when calling toJsonNode()
Key: AVRO-2775
URL: https://issues.apache.org/jira/browse/AVRO-2775
Project: Apache Avro
Issue Type: Bug
Components: java
Affects Versions: 1.9.2
Reporter: Andy Le
I've got a simple test as followed
{code:java}
public class TestJacksonUtils {
public static class Age{
public int value = 9;
}
@Test
public void testToJson(){
Map<String, Object> kv = new HashMap<>();
kv.put("age", 9);
JsonNode node1 = JacksonUtils.toJsonNode(kv); // -> This is OK
Object obj = new Age();
JsonNode node2 = JacksonUtils.toJsonNode(obj); // -> This will trigger an exception
}
}
{code}
When I ran the test:
{noformat}
org.apache.avro.AvroRuntimeException: Unknown datum class: class org.apache.avro.util.internal.TestJacksonUtils$Age
at org.apache.avro.util.internal.JacksonUtils.toJson(JacksonUtils.java:87)
at org.apache.avro.util.internal.JacksonUtils.toJsonNode(JacksonUtils.java:48)
at org.apache.avro.util.internal.TestJacksonUtils.testToJson(TestJacksonUtils.java:20)
{noformat}
I've read the code & tests for JacksonUtils. Instead of raising exceptions at [line #87|https://github.com/apache/avro/blob/master/lang/java/avro/src/main/java/org/apache/avro/util/internal/JacksonUtils.java#L87], I see we can auto convert objects into maps, every thing's gonna fine.
My question is:
- Is raising exception acceptable?
- Any other way to have `toJsonNode` for general objects?
--
This message was sent by Atlassian Jira
(v8.3.4#803005)