In this post, I am going to explain how to set default values to the missing fields.
When reading JSON that is missing a field, Moshi library depends on the default constructor. Whatever the values set by default constructor are used as default values for the missing fields.
Let’s see it with an example.
Box.java
package com.sample.app.model;
public class Box {
private Integer width;
private Integer height;
public Box() {
this.width = -1;
this.height = -1;
}
public Box(Integer width, Integer height) {
super();
this.width = width;
this.height = height;
}
public Integer getWidth() {
return width;
}
public void setWidth(Integer width) {
this.width = width;
}
public Integer getHeight() {
return height;
}
public void setHeight(Integer height) {
this.height = height;
}
@Override
public String toString() {
return "Box [width=" + width + ", height=" + height + "]";
}
}
DefaultValueDemo.java
package com.sample.app;
import java.io.IOException;
import com.sample.app.model.Box;
import com.squareup.moshi.JsonAdapter;
import com.squareup.moshi.Moshi;
public class DefaultValueDemo {
public static void main(String args[]) throws IOException {
Moshi moshi = new Moshi.Builder().build();
JsonAdapter<Box> boxJsonAdapter = moshi.adapter(Box.class);
String json1 = "{\"height\":15,\"width\":10}";
String json2 = "{\"height\":15}";
String json3 = "{\"width\":10}";
String json4 = "{}";
Box box1 = boxJsonAdapter.fromJson(json1);
Box box2 = boxJsonAdapter.fromJson(json2);
Box box3 = boxJsonAdapter.fromJson(json3);
Box box4 = boxJsonAdapter.fromJson(json4);
System.out.println(box1);
System.out.println(box2);
System.out.println(box3);
System.out.println(box4);
}
}
Output
Box [width=10, height=15] Box [width=-1, height=15] Box [width=10, height=-1] Box [width=-1, height=-1]
Previous Next Home
No comments:
Post a Comment