Как проверить строку
Подскажите, пожалуйста, топчусь на месте( Не пойму, как можно проверить строку такого вида! Преобразовать в json не получается да и кажется, что это будет лишним для всей строки. Нужно убедиться, что есть:
- METHOD: GET и URL: http://google.com/
- А также проверить, что в BODY содержатся поля userId, replId и view (без значений, только ключи)
Можно было бы написать, что-то типа:
if (msg.contains("METHOD: GET") && msg.contains("URL: http://google.com/") && msg.contains("BODY: и все это тело...")) {
System.out.println("ok");
}
Но кажется есть способы более понятные и удобные, а также есть поля из BODY динамические и для BODY проверка не пройдет, если так хардкодить. Ну и хочется нормальный код.
Проверку думаю делать с помощью assert в testng, чтобы примерно получилось такое:
Assert.assertEquals(
вся строка, в которой значения,
ожидаем значение для поля METHOD, у которого содержится значение GET); // для URL: http://google.com/ тоже самое
Assert.assertEquals(
вся строка, в которой значения,
ожидаем значение для BODY, у которого есть поля userId, replId и view); // либо этот ассерт сделать для каждого поля отдельно, типа есть ассерт для поле userId, такие же ассерты для replId и view
А вот и сама строка:
String msg = "METHOD: GET\n" +
"URL: http://google.com/\n" +
"token: 32Asdd1QQdsdsg$ff\n" +
"code: 200\n" +
"stand: test\n" +
"BODY: {\"userId\":\"11022:7\",\"bdaId\":\"110220\",\"replId\":\"fffDss0400rDF\",\"local\":\"not\",\"ttpm\":\"000\",\"view\":true}";
Подскажите, пожалуйста, что в данном случае сделать можно? Может кто-то с подобным сталкивался и все намного проще, чем я думаю или наоборот. Не могу понять куда копать даже уже =(
Спасибо всем заранее и простите за такой, возможно глупый вопрос.
Ответы (1 шт):
Это не JSON, или неверный json. Похоже на YAML, но не уверен. Все это можно вытащить таким образом
for(String str : msg.split("\\n")) {
int idx = str.indexOf(":");
String key = str.substr(0, idx).trim();
switch(key) {
case "METHOD": {
String methodValue = str.substr(idx + 1).trim();
break;
}
case "BODY": {
String bodyJsonValue = str.substr(idx + 1).trim();
// Вот тут или JSON парсить или выдирать регулярками
break;
}
default:
}
}