import { JsonClassType, JsonProperty, ObjectMapper, JsonGetter, JsonSetter } from 'jackson-js'; class User { @JsonProperty() @JsonClassType({type: () => [Number]}) id: number; @JsonProperty() @JsonClassType({type: () => [String]}) firstname: string; @JsonProperty() @JsonClassType({type: () => [String]}) lastname: string; @JsonProperty() @JsonClassType({type: () => [Array, [String]]}) fullname: string[]; constructor(id: number, firstname: string, lastname: string) { this.id = id; this.firstname = firstname; this.lastname = lastname; } @JsonGetter() @JsonClassType({type: () => [String]}) getFullname(): string { return this.firstname + ' ' + this.lastname; } @JsonSetter() setFullname(fullname: string) { this.fullname = fullname.split(' '); } } const user = new User(1, 'John', 'Alfa'); const objectMapper = new ObjectMapper(); const jsonData = objectMapper.stringify<User>(user); console.log(jsonData); // {"id":1,"firstname":"John","lastname":"Alfa","fullname":"John Alfa"} const userParsed = objectMapper.parse<User>(jsonData, {mainCreator: () => [User]}); console.log(userParsed); /* User { id: 1, firstname: 'John', lastname: 'Alfa', fullname: [ 'John', 'Alfa' ] } */