我收到此錯誤 “嵌套例外是 org.springframework.http.converter.HttpMessageConversionException:型別定義錯誤:[簡單型別,類 org.json.JSONObject];嵌套例外是 com.fasterxml.jackson.databind.exc.InvalidDefinitionException:運行專案時沒有找到類 org.json.JSONObject 的序列化程式,也沒有發現創建 BeanSerializer 的屬性。我嘗試了通過這個平臺找到的許多解決方案,但這些對我沒有用。是這種情況還是其他情況?如果是這樣,請幫我解決這個問題。
下面是 RowEvent.java 類。
@Component("support.support-provider.row-event")
public class RowEventSupportProvider extends SupportProvider {
@Override
public SupportResponse search(SearchData searchData) throws JSONException {
JSONObject supportProvider = new JSONObject();
supportProvider.put("startDate", searchData.getStartDate());
supportProvider.put("startTime", searchData.getStartTime());
supportProvider.put("endDate", searchData.getEndDate());
supportProvider.put("endTime", searchData.getEndTime());
supportProvider.put("clientId", searchData.getClientId());
supportProvider.put("launchContextId", searchData.getLaunchContextId());
supportProvider.put("integrationId", searchData.getIntegrationId());
supportProvider.put("deploymentId", searchData.getDeploymentId());
supportProvider.put("courseId", searchData.getCourseId());
supportProvider.put("courseType", searchData.getCourseType());
supportProvider.put("assignmentId", searchData.getAssignmentId());
supportProvider.put("assignmentType", searchData.getAssignmentType());
supportProvider.put("userId", searchData.getUserId());
supportProvider.put("userType", searchData.getUserType());
SupportResponse supportResponse = new SupportResponse();
supportResponse.setData(supportProvider);
return supportResponse;
}
}
SupportResponse.java
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import org.json.JSONObject;
import org.springframework.hateoas.Links;
import org.springframework.hateoas.RepresentationModel;
import java.util.List;
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)
public class SupportResponse extends RepresentationModel<SupportResponse>
{
String id;
Object data;
List<Links> links;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
}
uj5u.com熱心網友回復:
似乎您正在使用 json.org 依賴項來序列化 JSON,但是 spring 已經附帶了另一個 json 庫(jackson-databind),而 jackson 不知道如何將 JSONObject 從 org.json 轉換為 Json 字串。
要解決此問題,您可以使用ObjectNode,它是 Jackson Databind 中的 JSONObject 等效項:
@Component("support.support-provider.row-event")
public class RowEventSupportProvider extends SupportProvider {
@Autowired
private ObjectMapper objectMapper;
@Override
public SupportResponse search(SearchData searchData) throws JSONException {
ObjectNode supportProvider = objectMapper.createObjectNode();
supportProvider.put("startDate", searchData.getStartDate());
supportProvider.put("startTime", searchData.getStartTime());
supportProvider.put("endDate", searchData.getEndDate());
supportProvider.put("endTime", searchData.getEndTime());
supportProvider.put("clientId", searchData.getClientId());
supportProvider.put("launchContextId", searchData.getLaunchContextId());
supportProvider.put("integrationId", searchData.getIntegrationId());
supportProvider.put("deploymentId", searchData.getDeploymentId());
supportProvider.put("courseId", searchData.getCourseId());
supportProvider.put("courseType", searchData.getCourseType());
supportProvider.put("assignmentId", searchData.getAssignmentId());
supportProvider.put("assignmentType", searchData.getAssignmentType());
supportProvider.put("userId", searchData.getUserId());
supportProvider.put("userType", searchData.getUserType());
SupportResponse supportResponse = new SupportResponse();
supportResponse.setData(supportProvider);
return supportResponse;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/439302.html
下一篇:如何在顫振中決議嵌套的JSON?
