Skip to content

Commit f2d258a

Browse files
BAEL-2412
Working with primitive values in Gson.
1 parent ab821cb commit f2d258a

21 files changed

+325
-0
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.baeldung.gson_primitive_types.all_primitive_values;
2+
3+
import com.baeldung.gson_primitive_types.models.GsonBundle;
4+
import com.google.gson.Gson;
5+
6+
public class fromJsonPrimitiveTypes {
7+
public static void main(String[] args) {
8+
String json = "{\"value\": 17, \"shortValue\": 3, \"intValue\": 3, "
9+
+ "\"longValue\": 3, \"floatValue\": 3.5" + ", \"doubleValue\": 3.5"
10+
+ ", \"booleanValue\": true, \"charValue\": \"a\"}";
11+
12+
Gson gson = new Gson();
13+
GsonBundle gsonBundle = gson.fromJson(json, GsonBundle.class);
14+
15+
System.out.println(gsonBundle);
16+
}
17+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.baeldung.gson_primitive_types.all_primitive_values;
2+
3+
import com.baeldung.gson_primitive_types.models.GsonBundle;
4+
import com.google.gson.Gson;
5+
6+
public class toJsonPrimitiveTypes {
7+
public static void main(String[] args) {
8+
GsonBundle gsonBundle = new GsonBundle();
9+
Gson gson = new Gson();
10+
11+
System.out.println(gson.toJson(gsonBundle));
12+
}
13+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.baeldung.gson_primitive_types.boolean_value;
2+
3+
import com.baeldung.gson_primitive_types.models.GsonBoolean;
4+
import com.baeldung.gson_primitive_types.models.GsonFloat;
5+
import com.google.gson.Gson;
6+
7+
public class JsonIntegerRepresentationBooleanValue {
8+
public static void main(String[] args) {
9+
// Raises exception.
10+
String json = "{\"value\": 1}";
11+
Gson gson = new Gson();
12+
13+
GsonBoolean model = gson.fromJson(json, GsonBoolean.class);
14+
15+
System.out.println(model);
16+
}
17+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.baeldung.gson_primitive_types.boolean_value;
2+
3+
import com.baeldung.gson_primitive_types.models.GsonBoolean;
4+
import com.google.gson.Gson;
5+
6+
public class JsonInvalidValueWithinStringBooleanValue {
7+
public static void main(String[] args) {
8+
// It is ignored.
9+
String json = "{\"value\": \"15x\"}";
10+
Gson gson = new Gson();
11+
12+
GsonBoolean model = gson.fromJson(json, GsonBoolean.class);
13+
14+
System.out.println(model);
15+
}
16+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.baeldung.gson_primitive_types.boolean_value;
2+
3+
import com.baeldung.gson_primitive_types.models.GsonBoolean;
4+
import com.google.gson.Gson;
5+
6+
public class JsonYesRepresentationBooleanValue {
7+
public static void main(String[] args) {
8+
// It fails silently.
9+
String json = "{\"value\": yes}";
10+
Gson gson = new Gson();
11+
12+
GsonBoolean model = gson.fromJson(json, GsonBoolean.class);
13+
14+
System.out.println(model);
15+
}
16+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.baeldung.gson_primitive_types.byte_value;
2+
3+
import com.baeldung.gson_primitive_types.models.GsonBitString;
4+
import com.google.gson.*;
5+
6+
import java.lang.reflect.Type;
7+
8+
public class ToJsonBitString {
9+
public static void main(String[] args) {
10+
GsonBuilder builder = new GsonBuilder();
11+
builder.registerTypeAdapter(GsonBitString.class, new GsonBitStringSerializer());
12+
13+
Gson gson = builder.create();
14+
GsonBitString model = new GsonBitString();
15+
model.value = (byte) 0b1111;
16+
17+
System.out.println(gson.toJson(model));
18+
}
19+
20+
static class GsonBitStringSerializer implements JsonSerializer<GsonBitString> {
21+
@Override public JsonElement serialize(GsonBitString gsonBundle, Type type, JsonSerializationContext jsonSerializationContext) {
22+
JsonObject jsonObject = new JsonObject();
23+
jsonObject.addProperty("value", Integer.toBinaryString(gsonBundle.value));
24+
return jsonObject;
25+
}
26+
}
27+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.baeldung.gson_primitive_types.byte_value;
2+
3+
import com.baeldung.gson_primitive_types.models.GsonBitString;
4+
import com.google.gson.*;
5+
6+
import java.lang.reflect.Type;
7+
8+
public class fromJsonBitString {
9+
public static void main(String[] args) {
10+
String json = "{\"value\": \"1111\"}";
11+
GsonBuilder gsonBuilder = new GsonBuilder();
12+
gsonBuilder.registerTypeAdapter(GsonBitString.class, new GsonBitStringDeserializer());
13+
14+
Gson gson = gsonBuilder.create();
15+
16+
System.out.println(gson.fromJson(json, GsonBitString.class));
17+
}
18+
19+
static class GsonBitStringDeserializer implements JsonDeserializer<GsonBitString> {
20+
@Override public GsonBitString deserialize(JsonElement jsonElement,
21+
Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
22+
GsonBitString gsonBitString = new GsonBitString();
23+
gsonBitString.value = (byte) Integer.parseInt(
24+
jsonElement.getAsJsonObject().getAsJsonPrimitive("value").getAsString(), 2);
25+
return gsonBitString;
26+
}
27+
}
28+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.baeldung.gson_primitive_types.char_value;
2+
3+
import com.baeldung.gson_primitive_types.models.GsonBitString;
4+
import com.baeldung.gson_primitive_types.models.GsonLatinChar;
5+
import com.google.gson.Gson;
6+
7+
public class JsonUnicodeCharValue {
8+
public static void main(String[] args) {
9+
// The field is converted.
10+
Gson gson = new Gson();
11+
String json = "{\"value\": \"\\u00AE\"}";
12+
GsonLatinChar model = gson.fromJson(json, GsonLatinChar.class);
13+
14+
System.out.println(model);
15+
}
16+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.baeldung.gson_primitive_types.models;
2+
3+
public class GsonBitString {
4+
public byte value = (byte) 1;
5+
6+
public String toString() {
7+
return "{byte: " + value + "}";
8+
}
9+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.baeldung.gson_primitive_types.models;
2+
3+
public class GsonBoolean {
4+
public boolean value;
5+
6+
public String toString() {
7+
return "{boolean: " + value + "}";
8+
}
9+
}

0 commit comments

Comments
 (0)