You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When calling Gson.toJson(..., Appendable) and Appendable is not an instance of Writer, then Gson creates a CharSequence which does not fulfill the toString() requirements:
Returns a string containing the characters in this sequence in the same order as this sequence. The length of the string will be the length of this sequence.
Contrived example:
static class MyAppendable implements Appendable {
private final StringBuilder stringBuilder = new StringBuilder();
@Override
public Appendable append(char c) throws IOException {
stringBuilder.append(c);
return this;
}
@Override
public Appendable append(CharSequence csq) throws IOException {
if (csq == null) {
append("null");
} else {
append(csq, 0, csq.length());
}
return this;
}
public Appendable append(CharSequence csq, int start, int end) throws IOException {
if (csq == null) {
csq == "null";
}
// According to doc, toString() must return string representation
String s = csq.toString();
stringBuilder.append(s, start, end);
return this;
}
}
public static void main(String[] args) {
MyAppendable myAppendable = new MyAppendable();
new Gson().toJson("test", myAppendable);
// Prints `com.` (first 4 chars of `com.google.gson.internal.Streams.AppendableWriter.CurrentWrite`)
System.out.println(myAppendable.stringBuilder);
}
The text was updated successfully, but these errors were encountered:
…toString (#1703)
* Gson.toJson creates CharSequence which does not implement toString
* Improve Streams.AppendableWriter.CurrentWrite test
* Make setChars package-private
When calling
Gson.toJson(..., Appendable)
andAppendable
is not an instance ofWriter
, thenGson
creates aCharSequence
which does not fulfill thetoString()
requirements:Contrived example:
The text was updated successfully, but these errors were encountered: