我确实看到了 2.3 版 json.org 问题。同样的问题在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")而不是字符串。
你能告诉我为什么它是 2.3 版的问题吗?
body
的值,{"event" : "plan"}
不是一个字符串:它是一个 JSON 对象。
我不知道为什么您的 JSON 库的行为在版本 2.2 和 2.3 之间发生了变化,但 2.3 中的行为似乎是正确的。
如果要获取对象的String
表示形式,可以尝试:
bodyJsonObject.getJSONObject("body").toString();