根据API我们应该能够做到这一点。
http://www.json.org/javadoc/org/json/JSONObject.html#toString()
@Override
public JSONObject buildPayload(BuildData buildData, String jenkinsUrl, List<String> logLines) {
JSONObject payload = new JSONObject();
payload.put("data", buildData.toJson());
payload.put("message", logLines);
payload.put("source", "jenkins");
payload.put("source_host", jenkinsUrl);
payload.put("@timestamp", buildData.getTimestamp());
payload.put("@version", 1);
// we need to flatten payload from JSONObject to String
return payload.toString();
}
显然,我们定义了有效负载,它是一个JSONObject。为什么这不起作用,应该做些什么?
答案 0 :(得分:3)
您的方法声明它返回类型JSONObject
的值。但是这个:
return payload.toString();
返回类型String
的值。没有从String
到JSONObject
的隐式转换,因此编译时错误。
如果您真的想要一个字符串,请更改方法返回类型。如果您真的想要JSONObject
,只需将return语句更改为:
return payload;