diff --git a/src/main/java/com/jsoniter/ReflectionDecoderFactory.java b/src/main/java/com/jsoniter/ReflectionDecoderFactory.java index 65dee380..d031cd28 100644 --- a/src/main/java/com/jsoniter/ReflectionDecoderFactory.java +++ b/src/main/java/com/jsoniter/ReflectionDecoderFactory.java @@ -23,6 +23,9 @@ public static Decoder create(ClassInfo classAndArgs) { if (clazz.isEnum()) { return new ReflectionEnumDecoder(clazz); } + if (clazz.isRecord()) { + return new ReflectionRecordDecoder(clazz, typeArgs); + } return new ReflectionObjectDecoder(classAndArgs).create(); } } diff --git a/src/test/java/com/jsoniter/TestRecord.java b/src/test/java/com/jsoniter/TestRecord.java new file mode 100644 index 00000000..4ea8b92a --- /dev/null +++ b/src/test/java/com/jsoniter/TestRecord.java @@ -0,0 +1,18 @@ +package com.jsoniter; + +import junit.framework.TestCase; + +import java.io.IOException; + +public class TestRecord extends TestCase { + + record TestRecord1(long field1) { + + } + + public void test_record_error() throws IOException { + + JsonIterator iter = JsonIterator.parse("{ 'field1' : 1".replace('\'', '"')); + iter.read(TestRecord1.class); + } +}