I will update my version, but long story short, the following does not work
@Test
> public void foo() {
> try (Jsonb jsonb = ....) {
> final Person person = new Person("John Doe", LocalDate.of(1990, 1,
> 1));
> final String json = jsonb.toJson(person);
> assertEquals("{\"name\":\"John Doe\",\"birthday\":\"1990-01-01\"}",
> json);
>
> final Person deserializedPerson = jsonb.fromJson(json, Person.class);
> assertEquals("John Doe", deserializedPerson.name());
> assertEquals(33, deserializedPerson.age());
> } catch (Exception e) {
> throw new RuntimeException(e);
> }
> }
>
> @Builder(builderClassName = "Builder")
> public record Person (String name, LocalDate birthday) {
> public int age() {
> return LocalDate.now().getYear() - birthday.getYear();
> }
> }
>
>
>
The JSON would contain 2 additional nodes
"builder":{},
> "age": 33
I've updated the MethodAccessMode to filter out methods which are not fields
if (isRecord(clazz) || Meta.getAnnotation(clazz, JohnzonRecord.class) != null) {
readers.putAll(Stream.of(clazz.getMethods())
.filter(it -> it.getDeclaringClass() != Object.class &&
it.getParameterCount() == 0)
.filter(it -> clazz.getRecordComponents() == null
||
java.util.Arrays.stream(it.getDeclaringClass().getRecordComponents())
.anyMatch(rc -> rc.getName().equals(it.getName())
&&
rc.getType().equals(it.getReturnType())))
.filter(it -> !"toString".equals(it.getName()) &&
!"hashCode".equals(it.getName()))
.filter(it -> !isIgnored(it.getName()) &&
Meta.getAnnotation(it, JohnzonAny.class) == null)
.collect(toMap(m -> extractKey(m.getName(), m, null), it ->
new MethodReader(it, it.getGenericReturnType()))));
} else {
But again, it might be something with my project if you think it's all ok.
--
Jean-Louis Monteiro
http://twitter.com/jlouismonteiro
http://www.tomitribe.com
On Wed, Jul 2, 2025 at 2:14 PM Romain Manni-Bucau <[email protected]>
wrote:
> Hi JL,
>
> No strong opinion but records are supported since day 1 by johnzon so not
> sure I get right the last part of your mail.
>
> Romain Manni-Bucau
> @rmannibucau <https://x.com/rmannibucau> | .NET Blog
> <https://dotnetbirdie.github.io/> | Blog <https://rmannibucau.github.io/>
> | Old
> Blog <http://rmannibucau.wordpress.com> | Github
> <https://github.com/rmannibucau> | LinkedIn
> <https://www.linkedin.com/in/rmannibucau> | Book
> <
> https://www.packtpub.com/en-us/product/java-ee-8-high-performance-9781788473064
> >
>
>
> Le mer. 2 juil. 2025 à 12:51, Jean-Louis Monteiro <
> [email protected]>
> a écrit :
>
> > Hi all,
> >
> > Anyone against bumping the java version for the main branch from 11 to 14
> > (or even 17)?
> > Currently, Java Record aren't really well managed and I don't think using
> > Java Reflection to workaround the Java version is the best design.
> >
> >
> > --
> > Jean-Louis Monteiro
> > http://twitter.com/jlouismonteiro
> > http://www.tomitribe.com
> >
>