eclipse-vertx / eclipse-vertx/vertx-codegen

@DataObject does not handle json in String format when generating Converters

Offen
#312 5 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
bug
Vorherrschende Sprache
Java
Sterne
111
Forks
88
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

### Version
3.9.2

### Context

When @'DataObject' is generated with its fromJson method objects that are import io.vertx.core.json.JsonObject only accept JsonObject as valid option for mapping. Example generated constructor:

`private JsonObject attributes;`

For this property following code is generated:
```
case "attributes":
if (member.getValue() instanceof JsonObject) {
obj.setAttributes(((JsonObject)member.getValue()).copy());
}
break;
```

Generated code should be like:
```
case "attributes":
if (member.getValue() instanceof JsonObject) {
obj.setAttributes(((JsonObject)member.getValue()).copy());
} else if (member.getValue() instanceof String) {
obj.setAttributes(new JsonObject(member.getValue()));
}
break;
```
If for example from DB I get a String field that has JSON formating this property will never get mapped. On the other hand if this POJO is generated by Jackson function this field with get mapped.
`SomeDTO someDTO = json.mapTo(SomeDTO.class); `

### Extra

Is this something that was intended or just wasn't considered. In my eyes this is a standard approach as vertx json wrapper accepts String as valid for when generating Json objects. I can submit a PR if we agree to go with this.

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne beim @DataObject-fromJson-Konvertergenerierungspfad und untersuche, wie die attributes-Eigenschaft von JsonObject behandelt wird. Reproduziere den gezeigten Fall mit einem JSON String und überprüfe anschließend, dass sowohl JsonObject- als auch String-Eingaben erfolgreich zugeordnet werden und dass der generierte Code dem gewünschten Verhalten entspricht.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java
Bereich
tooling
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.