java: 无法检查这个字符串
java: Can't check this string
无法将String转成json,而且对整个字符串来说好像会多余
我在想也许 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: 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,然后只检查必要的键。
无法将String转成json,而且对整个字符串来说好像会多余
我在想也许 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: 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,然后只检查必要的键。