java - JsonObject ("body") 不是字符串

标签 java json

我确实发现 json.org 版本 2.3 存在问题。 java 中的 json.org 2.2 没有观察到同样的问题

以下是原始消息

"message" : { "header" : {"version" : "1.2" },
              "body"   : {"event" : "plan"}
            }
JSONObject msgJsonObject = new JSONObject(rawMessage.getBody());
String message = msgJsonObject.getString(MESSAGE);
JSONObject bodyJsonObject = new JSONObject(message);
log.error(" Message : "+ message);


String body = bodyJsonObject.getString("body");

使用 json.org 版本 2.2 以上的代码可以正常工作,但使用 json.org 版本 2.3 'bodyJsonObject.getString(BODY)' 会引发 JsonException: JsonObject("body") not a string。

您能否告诉我为什么 2.3 版出现问题?

最佳答案

body 的值,{"event": "plan"} 不是字符串:它是一个 JSON 对象。

我不知道为什么 JSON 库的行为在版本 2.2 和 2.3 之间发生了变化,但 2.3 中的行为似乎是正确的。

如果您想获取对象的String表示形式,您可以尝试:

bodyJsonObject.getJSONObject("body").toString();

关于java - JsonObject ("body") 不是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37789670/

相关文章:

java - Java中如何调用系统控制台?

java - 在 Maven 项目中包含本地 jar 文件 - 未找到文件

php - 使用 API 从 Mandrill 发送模板电子邮件为空

Objective-C JSON bool 值

java - JAVA中解析结构总是变化的JSON组件

javascript - 如何使用 Ajax 将 WebSocket 数据从 View 发送到 Controller 以及将修改后的数据发送到 View

java - 如何使 rijndael (php) 算法适应 aes (java)

java - 如何获取打印机的位置

java - Hibernate Envers 如何记录额外的审计数据,例如被审计的表名

java - 使用 Arrays.copyOf 的 minSdkVersion 应该是什么; jackson 问题