google / google/gson

Inconsistency JsonReader vs JsonTreeReader about double precision loss

Open
#2,817 3 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
Java
Stars
24.2k
Forks
4.5k
Avg merge
6d 4h
Merged PRs (30d)
12

Description

Relates #1737

# Gson version
2.12.1

# Description
JsonReader and JsonTreeReader do not have the same behavior while reading a long (or an int) when the next token is a double.
JsonReader will fail.
JsonTreeReader will cast, it should fail also.

```
String json1 = "{\"value\": 42.123}";
JsonReader reader1 = new JsonReader(new StringReader(json1));
reader1.beginObject();
reader1.nextName();
int result1 = reader1.nextInt(); // fails
System.out.println("Result 1 : " + result1);
```
vs
```
JsonObject json2 = new JsonObject();
json2.addProperty("value", 42.123);
JsonTreeReader reader2 = new JsonTreeReader(json2);
reader2.beginObject();
reader2.nextName();
int result2 = reader2.nextInt(); // cast
System.out.println("Result 2 : " + result2); // -> 42
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.