Skip to content

Commit f52d39f

Browse files
committed
#34 - Fix JsonView should use property name rather than field name
1 parent f2e3034 commit f52d39f

File tree

3 files changed

+29
-2
lines changed

3 files changed

+29
-2
lines changed

blackbox-test/src/test/java/org/example/customer/PubFieldsAndAccessors.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ public class PubFieldsAndAccessors {
1414
// match the getter for isRegistered to getRegistered()
1515
private Boolean isRegistered;
1616

17+
@Json.Property("problem")
18+
private Boolean isProblem;
19+
1720
public String getName() {
1821
return name;
1922
}
@@ -48,4 +51,13 @@ public Boolean getRegistered() {
4851
public void setRegistered(Boolean registered) {
4952
isRegistered = registered;
5053
}
54+
55+
public Boolean getProblem() {
56+
return isProblem;
57+
}
58+
59+
public PubFieldsAndAccessors setProblem(Boolean problem) {
60+
isProblem = problem;
61+
return this;
62+
}
5163
}

blackbox-test/src/test/java/org/example/customer/PubFieldsAndAccessorsTest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.example.customer;
22

3+
import io.avaje.jsonb.JsonView;
34
import io.avaje.jsonb.Jsonb;
45
import org.junit.jupiter.api.Test;
56

@@ -48,4 +49,18 @@ void objectBooleanAsNull() {
4849
assertThat(fromJsonWithNull.isActive()).isEqualTo(false);
4950
assertThat(fromJsonWithNull.getRegistered()).isNull();
5051
}
52+
53+
@Test
54+
void viewUsesPropertyName() {
55+
var bean = new PubFieldsAndAccessors();
56+
bean.name = "foo";
57+
bean.setProblem(true);
58+
59+
String asJson = jsonb.toJson(bean);
60+
assertThat(asJson).isEqualTo("{\"name\":\"foo\",\"score\":0,\"isActive\":false,\"problem\":true}");
61+
62+
JsonView<PubFieldsAndAccessors> view = jsonb.type(PubFieldsAndAccessors.class).view("name,problem");
63+
String viewJson = view.toJson(bean);
64+
assertThat(viewJson).isEqualTo("{\"name\":\"foo\",\"problem\":true}");
65+
}
5166
}

jsonb-generator/src/main/java/io/avaje/jsonb/generator/FieldReader.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -304,10 +304,10 @@ void writeFromJsonUnmapped(Append writer, String varName) {
304304

305305
void writeViewBuilder(Append writer, String shortName) {
306306
if (getter == null) {
307-
writer.append(" builder.add(\"%s\", %s, builder.field(%s.class, \"%s\"));", fieldName, adapterFieldName, shortName, fieldName).eol();
307+
writer.append(" builder.add(\"%s\", %s, builder.field(%s.class, \"%s\"));", propertyName, adapterFieldName, shortName, fieldName).eol();
308308
} else {
309309
final String topType = genericType.topType();
310-
writer.append(" builder.add(\"%s\", %s, builder.method(%s.class, \"%s\", %s.class));", fieldName, adapterFieldName, shortName, getter.getName(), topType).eol();
310+
writer.append(" builder.add(\"%s\", %s, builder.method(%s.class, \"%s\", %s.class));", propertyName, adapterFieldName, shortName, getter.getName(), topType).eol();
311311
}
312312
}
313313
}

0 commit comments

Comments
 (0)