Skip to content

Commit 98576ce

Browse files
committed
[json] Optionally allow us to not output class names
1 parent 12b0c79 commit 98576ce

2 files changed

Lines changed: 35 additions & 0 deletions

File tree

java/client/src/org/openqa/selenium/json/JsonOutput.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ public class JsonOutput implements Closeable {
102102
private String indent = "";
103103
private String lineSeparator = "\n";
104104
private String indentBy = " ";
105+
private boolean writeClassName = true;
105106

106107
JsonOutput(Appendable appendable) {
107108
this.appendable = Require.nonNull("Underlying appendable", appendable);
@@ -209,6 +210,11 @@ public JsonOutput setPrettyPrint(boolean enablePrettyPrinting) {
209210
return this;
210211
}
211212

213+
public JsonOutput writeClassName(boolean writeClassName) {
214+
this.writeClassName = writeClassName;
215+
return this;
216+
}
217+
212218
public JsonOutput beginObject() {
213219
stack.getFirst().write("{" + lineSeparator);
214220
indent += indentBy;
@@ -374,6 +380,10 @@ private void mapObject(Object toConvert, int maxDepth) {
374380
continue;
375381
}
376382

383+
if (!writeClassName && "class".equals(pd.getName())) {
384+
continue;
385+
}
386+
377387
Object value = pd.getReadMethod().apply(toConvert);
378388
if (!Optional.empty().equals(value)) {
379389
name(pd.getName());

java/client/test/org/openqa/selenium/json/JsonOutputTest.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -671,6 +671,31 @@ public Optional<String> getNoValue() {
671671
assertThat(obj.has("noValue")).describedAs(json).isFalse();
672672
}
673673

674+
@Test
675+
public void onRequsetShouldNotWriteClassNamesIntoJson() {
676+
class WithClassName {
677+
public String getCheese() {
678+
return "gouda";
679+
}
680+
}
681+
682+
String json = convert(new WithClassName());
683+
684+
JsonObject obj = JsonParser.parseString(json).getAsJsonObject();
685+
assertThat(obj.has("class")).isTrue();
686+
assertThat(obj.get("cheese").getAsString()).isEqualTo("gouda");
687+
688+
StringBuilder str = new StringBuilder();
689+
try (JsonOutput out = new Json().newOutput(str).writeClassName(false)) {
690+
out.write(new WithClassName());
691+
}
692+
693+
json = str.toString();
694+
obj = JsonParser.parseString(json).getAsJsonObject();
695+
assertThat(obj.has("class")).isFalse();
696+
assertThat(obj.get("cheese").getAsString()).isEqualTo("gouda");
697+
}
698+
674699
private String convert(Object toConvert) {
675700
try (Writer writer = new StringWriter();
676701
JsonOutput jsonOutput = new Json().newOutput(writer)) {

0 commit comments

Comments
 (0)