package com.jsoniter.demo;
import com.jsoniter.JsonIterator;
import com.jsoniter.annotation.*;
import com.jsoniter.output.JsonStream;
import org.junit.Test;
import java.io.IOException;
public class WrapperUnwrapper {
public static class Name {
private final String firstName;
private final String lastName;
public Name(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
}
public static class User {
private Name name;
public int score;
@JsonIgnore
public Name getName() {
return name;
}
@JsonUnwrapper
public void writeName(JsonStream stream) throws IOException {
stream.writeObjectField("firstName");
stream.writeVal(name.getFirstName());
stream.writeMore();
stream.writeObjectField("lastName");
stream.writeVal(name.getLastName());
}
@JsonWrapper
public void setName(@JsonProperty("firstName") String firstName, @JsonProperty("lastName") String lastName) {
System.out.println(firstName);
name = new Name(firstName, lastName);
}
}
@Test
public void test() {
JsoniterAnnotationSupport.enable();
String input = "{'firstName': 'tao', 'lastName': 'wen', 'score': 100}".replace('\'', '\"');
System.out.println(input);
User user = JsonIterator.deserialize(input, User.class);
System.out.println(user.getName().getFirstName());
System.out.println(JsonStream.serialize(user));
System.out.println(JsonStream.serialize(new int[]{1,2,3}));
}
}