[BAEL-5553] Check whether a string is valid JSON in Java (#12136)
* [BAEL-5553] Check whether a string is valid JSON in Java * [BAEL-5553] Move implementation to json-2 package * [BAEL-5553] Move mapper creation outside method
This commit is contained in:
parent
0babebe608
commit
c2cceb1d7e
|
@ -14,6 +14,11 @@
|
|||
</parent>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.json</groupId>
|
||||
<artifactId>json</artifactId>
|
||||
<version>${json.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>fastjson</artifactId>
|
||||
|
@ -148,6 +153,7 @@
|
|||
<jsoniter.version>0.9.23</jsoniter.version>
|
||||
<moshi.version>1.9.2</moshi.version>
|
||||
<fastjson.version>1.2.21</fastjson.version>
|
||||
<json.version>20211205</json.version>
|
||||
</properties>
|
||||
|
||||
</project>
|
|
@ -0,0 +1,32 @@
|
|||
package com.baeldung.jsonvalidation;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonParser;
|
||||
import com.google.gson.JsonSyntaxException;
|
||||
import com.google.gson.TypeAdapter;
|
||||
|
||||
public class GsonValidator {
|
||||
|
||||
final TypeAdapter<JsonElement> strictAdapter = new Gson().getAdapter(JsonElement.class);
|
||||
|
||||
public boolean isValid(String json) {
|
||||
try {
|
||||
JsonParser.parseString(json);
|
||||
} catch (JsonSyntaxException e) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean isValidStrict(String json) {
|
||||
try {
|
||||
strictAdapter.fromJson(json);
|
||||
} catch (JsonSyntaxException | IOException e) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
package com.baeldung.jsonvalidation;
|
||||
|
||||
import com.fasterxml.jackson.core.JacksonException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
public class JacksonValidator {
|
||||
|
||||
final ObjectMapper mapper = new ObjectMapper();
|
||||
|
||||
public boolean isValid(String json) {
|
||||
try {
|
||||
mapper.readTree(json);
|
||||
} catch (JacksonException e) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
package com.baeldung.jsonvalidation;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
public class JsonValidator {
|
||||
|
||||
public boolean isValidObject(String json) {
|
||||
try {
|
||||
new JSONObject(json);
|
||||
} catch (JSONException e) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean isValidJson(String json) {
|
||||
try {
|
||||
new JSONObject(json);
|
||||
} catch (JSONException e) {
|
||||
try {
|
||||
new JSONArray(json);
|
||||
} catch (JSONException ne) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
package com.baeldung.jsonvalidation;
|
||||
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
public class GsonValidatorUnitTest {
|
||||
|
||||
private final GsonValidator validator = new GsonValidator();
|
||||
|
||||
@Test
|
||||
public void givenValidObjectJson_whenValidatingNonStrict_thenValid() {
|
||||
String json = "{\"email\": \"example@com\", \"name\": \"John\"}";
|
||||
assertTrue(validator.isValid(json));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenValidArrayJson_whenValidatingNonStrict_thenValid() {
|
||||
String json = "[{\"email\": \"example@com\", \"name\": \"John\"},{\"email\": \"example1@com\", \"name\": \"Bob\"}]";
|
||||
assertTrue(validator.isValid(json));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenInvalidJson_whenValidatingNonStrict_thenValid() {
|
||||
String json = "Invalid_Json";
|
||||
assertTrue(validator.isValid(json));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenInvalidJson_whenValidatingStrict_thenInvalid() {
|
||||
String json = "Invalid_Json";
|
||||
assertFalse(validator.isValidStrict(json));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
package com.baeldung.jsonvalidation;
|
||||
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
public class JacksonValidatorUnitTest {
|
||||
|
||||
private final JacksonValidator validator = new JacksonValidator();
|
||||
|
||||
@Test
|
||||
public void givenValidObjectJson_whenValidating_thenValid() {
|
||||
String json = "{\"email\": \"example@com\", \"name\": \"John\"}";
|
||||
assertTrue(validator.isValid(json));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenValidArrayJson_whenValidating_thenValid() {
|
||||
String json = "[{\"email\": \"example@com\", \"name\": \"John\"},{\"email\": \"example1@com\", \"name\": \"Bob\"}]";
|
||||
assertTrue(validator.isValid(json));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenInvalidJson_whenValidating_thenInvalid() {
|
||||
String json = "Invalid_Json";
|
||||
assertFalse(validator.isValid(json));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
package com.baeldung.jsonvalidation;
|
||||
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
public class JsonValidatorUnitTest {
|
||||
|
||||
private final JsonValidator validator = new JsonValidator();
|
||||
|
||||
@Test
|
||||
public void givenValidObjectJson_whenValidatingObject_thenValid() {
|
||||
String json = "{\"email\": \"example@com\", \"name\": \"John\"}";
|
||||
assertTrue(validator.isValidObject(json));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenInvalidJson_whenValidating_thenInvalid() {
|
||||
String json = "Invalid_Json";
|
||||
assertFalse(validator.isValidObject(json));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenValidArrayJson_whenValidatingObject_thenInvalid() {
|
||||
String json = "[{\"email\": \"example@com\", \"name\": \"John\"},{\"email\": \"example1@com\", \"name\": \"Bob\"}]";
|
||||
assertFalse(validator.isValidObject(json));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenValidJson_whenValidatingJson_thenValid() {
|
||||
String json = "[{\"email\": \"example@com\", \"name\": \"John\"},{\"email\": \"example1@com\", \"name\": \"Bob\"}]";
|
||||
assertTrue(validator.isValidJson(json));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue