java: 无法检查这个字符串

java: Can't check this string

无法将String转成json,而且对整个字符串来说好像会多余
我在想也许 json 可能对我有所帮助,但它似乎并没有给我我想要的东西,或者我不知道它是如何工作的。
我如何检查字符串?

我需要检查:

我试图找到一种方法来检查:

if (msg.contains("METHOD: GET") && msg.contains("URL: http://google.com/") && msg.contains("BODY: etc...")) {
        System.out.println("ok");
    }

没用。来自 BODY 的一些值是动态的,这就是为什么 BODY 如果它是硬编码的字符串,检查将不会通过。我想还有更好的方法可以做到这一点。

我想要这样的东西:

Assert.assertEquals(
   msg, 
   the expected value for METHOD, which contains GET); // same here for URL: http://google.com/                          

Assert.assertEquals(
   msg, 
   the expected value for BODY that has userId, replId, and view fields); // or make this assertion for each field separately, such as there is an assertion for the userId field, the same assertions for replId and 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}";

我想不出任何方法来检查它。有什么想法吗?

可以使用java.util.List Interface (of type String) and place the string contents into that list. Then you can use the List#contains()的方法,例如:

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}";

// Split contents of msg into list.
java.util.List<String> list = Arrays.asList(msg.split("\n"));
    
if (list.contains("METHOD: GET")) {
    System.out.println("YUP! Got: --> 'METHOD: GET'");
}
else { 
    System.out.println("NOPE! Don't have: --> 'METHOD: GET'");
}

我试过使用断言:

String[] arr1 = msg.split("\n");
Map<String, String> allFieldsMessage = new HashMap<>();
for (String s : arr1) {
    String key = s.trim().split(": ")[0];
    String value = s.trim().split(": ")[1];
    allFieldsMessage.put(key, value);
}
Assert.assertEquals(
        allFieldsMessage.get("METHOD"),
        "GET"
);

URL也是如此。但我的问题出在 BODY 部分。我想也许可以尝试将 String 的这个特定部分解析为 json,然后只检查必要的键。