Как проверить строку

Подскажите, пожалуйста, топчусь на месте( Не пойму, как можно проверить строку такого вида! Преобразовать в 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 шт):

Автор решения: George_A

Это не 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:
   }   
}
→ Ссылка