java - 如何将 JSON 消息的一部分解析为 String 并将其传递给另一个类?
问题描述
我有以下 JSON 消息作为来自服务器的响应:
{
"HttpStatus": 500,
"Errors": [
{
"ErrorCode": 325267273,
"Message": "Object too old",
"ParameterName": null
}
]
}
得到响应:
if (res.getStatus() == 200) {
return true;
} else {
LogManager.getLogger(INIT_LOGGER).error(String.format("%d", res.getStatus()));
BufferedReader rdr = new BufferedReader(new InputStreamReader((InputStream) res.getEntity()));
StringBuilder sbr = new StringBuilder();
while ((msg = rdr.readLine()) != null) {
sbr.append(msg);
System.out.println("Faces message 1: " + msg);
}
return false;
我想将“消息”部分解析为 Java 中的变量并将其传递给另一个类。如何做到这一点?
解决方案
如果保证您的字符串只包含一个“消息”标签,您可以尝试获取该标签的索引并解析后面的字符串(为了提高效率而不是构建整个字符串):
while ((msg = rdr.readLine()) != null) {
int i = msg.indexOf("\"Message\":");
// If not contained, continue with next line
if (i == -1)
continue;
i += 10; // Add length of searched string to reach end of match
// Skip all whitespace
while (Character.isWhitespace(msg.charAt(i)))
i++;
// If following is a string
if (msg.charAt(i++) == '"') {
StringBuilder sb = new StringBuilder();
char c;
// While not reached end of string
for (; (c = msg.charAt(i)) != '"'; i++) {
// For escaped quotes and backslashes; could be made a lot simpler without
if (c == '\\')
sb.append(msg.charAt(++i));
else sb.append(c);
}
messageString = sb.toString();
}
}
推荐阅读
- python - 如何使用 python pandas 分组和计算新字段?
- javascript - 在我的 Javascript 代码中遇到一个元素
- tensorflow - 这是与 Tensorflow 相关的问题吗?
- windows - 双击以管理员身份执行
- simulation - AnyLogic:使用添加列表按钮并行使用不同资源池时出错
- automated-tests - 我应该使用 BDD 吗?
- javascript - 如何更新一些数组条目以具有多个值?
- html - 为什么我的图像看起来被剪裁到两侧?
- javascript - PostgreSQL 中日期和时间的数据类型是什么?
- python - 这应该计算出投资翻倍需要多长时间。返回值太长了。我需要使用 while 循环