JsonObject( "body" ) 不是字符串



我确实看到了 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();

最新更新