Skip to content

Commit d82fdb7

Browse files
committed
Handle simplified (single quoted) JSON
Java strings are easier to write when you don't have to escape double quotes all the time. If the JSON parsing fails due to an invalid single quote character, try again with all the quotes replaced with double quotes.
1 parent 31f7965 commit d82fdb7

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

src/main/java/net/joshka/junit/json/params/JsonArgumentsProvider.java

+14
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
import javax.json.JsonReader;
1010
import javax.json.JsonStructure;
1111
import javax.json.JsonValue;
12+
import javax.json.stream.JsonParsingException;
13+
import java.io.IOException;
1214
import java.io.Reader;
1315
import java.io.StringReader;
1416
import java.util.stream.Stream;
@@ -23,6 +25,18 @@ public void accept(JsonSource jsonFileSource) {
2325

2426
@Override
2527
public Stream<? extends Arguments> provideArguments(ExtensionContext extensionContext) throws Exception {
28+
try {
29+
return getArguments(value);
30+
} catch (JsonParsingException e) {
31+
// attempt to parse simplified json e.g. "{'key':value'}"
32+
if (e.getMessage().contains("Unexpected char 39")) {
33+
return getArguments(value.replace("'", "\""));
34+
}
35+
throw e;
36+
}
37+
}
38+
39+
private Stream<? extends Arguments> getArguments(String value) throws IOException {
2640
try (Reader reader = new StringReader(value)) {
2741
return values(reader).map(Arguments::of);
2842
}

src/test/java/net/joshka/junit/json/params/JsonArgumentsProviderTest.java

+7
Original file line numberDiff line numberDiff line change
@@ -65,4 +65,11 @@ void arrayOfNumbers(JsonNumber number) {
6565
void arrayOfStrings(JsonString string) {
6666
assertThat(string.getString()).startsWith("value");
6767
}
68+
69+
@ParameterizedTest
70+
@JsonSource("{'key':'value'}")
71+
@DisplayName("handles simplified json")
72+
void simplifiedJson(JsonObject object) {
73+
assertThat(object.getString("key")).isEqualTo("value");
74+
}
6875
}

0 commit comments

Comments
 (0)