JsonObject(“body”)不是字符串

时间:2016-06-13 12:18:05

标签: 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”)不是字符串。

您能告诉我为什么它与版本2.3有关吗?

1 个答案:

答案 0 :(得分:1)

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

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

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

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