我确实发现 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/