Potrzebuję pomocy przy niezawodnym walidatorze string JSON - metodzie, która pobiera ciąg znaków i sprawdza, czy jest to poprawny JSON. Przykład: jeśli przejdę {"color":"red"}
lub {"amount":15}
przejdzie, ale coś takiego jak "My invalid json"
nie będzie. W skrócie potrzebuję czegoś tak niezawodnego jak walidator www.jsonlint.com. BTW - Nie jestem zainteresowany przekształcaniem w obiekt Java, ponieważ nie jest to moim wymaganiem. Mogę otrzymać dowolny ciąg znaków i wszystko, co muszę zrobić, to sprawdzenie, czy ma poprawny format JSON.Niezawodny walidator ciągów JSON w Javie
Mam już zbadane na tym forum kilka postów na ten temat dotyczące walidacji ciągów JSON java.
co zrobiłem do tej pory:
Próbowałem za pomocą tych klas: org.json.JSONObject
i org.json.JSONArray
w następujący sposób:
private static boolean isValidJSONStringObject(String requestBody){
try {
new JSONObject(requestBody);
} catch (JSONException jsonEx) {
return false;
}
return true;
}
private static boolean isValidJSONStringArray(String requestBody) {
try {
new JSONArray(requestBody);
} catch (JSONException jsonEx) {
return false;
}
return true;
}
Jednakże następujące ciągi (cały linie) jeszcze przejść, i nie powinny one:
{"color":"red"}{"var":"value"}
[1,2,3][true,false]
innymi słowy, gdy mam obiekty/tablice powtarzane bez wyłapywania jakichkolwiek enkapsulacji w jakimś obiekcie nadrzędnym. Jeśli wkleisz te linie w walidatorze www.jsonlint.com, obydwa zawiodą.
Wiem, że zawsze istnieje opcja regex, ale nie da się tego zagwarantować w 100% ze względu na rekurencyjną naturę JSON, a wyrażenia wyrażenia regularnego będą raczej skomplikowane.
Każda pomoc zostanie bardzo doceniona!
Czy próbowałeś innych bibliotek? Myślę, że jackson na to nie pozwala. – yshavit
'" Mój nieprawidłowy json "' jest złym przykładem nieprawidłowego JSON, ponieważ w rzeczywistości jest prawidłowym łańcuchem JSON. – pfyod