我确实看到了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”)不是字符串。
您能告诉我为什么它与版本2.3有关吗?
答案 0 :(得分:1)
body
,{"event" : "plan"}
的值不是字符串:它是一个JSON对象。
我不知道为什么你的JSON库的行为在版本2.2和2.3之间发生了变化,但2.3中的行为似乎是正确的。
如果您想获得对象的String
表示,可以尝试:
bodyJsonObject.getJSONObject("body").toString();