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
{{ message }}
Repository navigation
Gson.toJson: CharSequence passed to Appendable does not implement toString()Â #1702
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);
}
Activity
Fix google#1702: Gson.toJson creates CharSequence which does not impl…
Marcono1234 commentedon Jul 26, 2022
This is actually a duplicate of #527 (though maybe this issue here can be kept open because it includes a self-contained reproduction example)?
Fix #1702: Gson.toJson creates CharSequence which does not implement …