-1
다른 클래스의 다른 속성이 포함 된 클래스가 있고 json을 클래스로 변환하려고하면 오류가 표시됩니다. I 나타나는 오류 여기JSON을 클래스로 매핑하면 작동하지 않습니다.
public static JSONObject acceptBusinessTravel(JSONObject input) {
String btId = getStringField(input, "id");
MongoCollection businessTravels = getBTCollection();
// Here is the problem...
BusinessTravelDTO bt = businessTravels.findOne(new ObjectId(btId)).as(BusinessTravelDTO.class);
bt.setStatus(BusinessTravelStatus.Accepted);
businessTravels.save(bt);
return new JSONObject().put("message", "The business travel has been ACCEPTED by your manager. Check your email.");
}
:
"error": "org.jongo.marshall.MarshallingException: Unable to unmarshall result to class path.data.BusinessTravelDTO from content { \"_id\" : { \"$oid\" : \"59d6905411d58632fd5bd8a5\"} , \"travelerId\"
jongo에서
이
내 클래스 :import org.jongo.marshall.jackson.oid.MongoObjectId;
import org.json.JSONObject;
import java.util.List;
public class BusinessTravelDTO {
@MongoObjectId
private String id;
private String travelerId;
private BusinessTravelStatus status;
List<FlightDTO> flights;
List<HotelDTO> hotels;
List<CarDTO> cars;
public BusinessTravelDTO() { }
public BusinessTravelDTO(JSONObject data) {
this.travelerId = data.getString("travelerId");
this.status = BusinessTravelStatus.valueOf(data.getString("status"));
this.flights = HandlerUtil.getInputFlights(data.getJSONArray("flights"));
this.hotels = HandlerUtil.getInputHotels(data.getJSONArray("hotels"));
this.cars = HandlerUtil.getInputCars(data.getJSONArray("cars"));
}
public JSONObject toJson() {
return new JSONObject()
.put("id", this.id)
.put("travelerId", this.travelerId)
.put("status", this.status)
.put("flights", this.flights)
.put("hotels", this.hotels)
.put("cars", this.cars);
}
그리고 여기에 내가 클래스에 변환 할 곳이다 docs 클래스가 빈 생성자가 있어야 지정되어 있습니다 ... http://jongo.org/#mapping 나는 2 생성자가, 나는 또한 시도 @JsonCreator를 사용했지만 성공하지 못했습니다. ... (
변환되지 않는 이유가 있습니까? 예를 들어 List CarDTO와 같은 BusinesTravelDTO 내부의 필드와 관련된 것이 될 수 있습니까?
JSON 텍스트에는 '$ oid' 필드가있는 개체 유형의'_id' 필드가있는 반면, 'BusinessTravelDTO'에는 'String'유형의 id 필드가 있습니다. 어떻게 그 일을 기대 했습니까? --- 저는 코드에서 어디에서 마샬링을하는지 볼 수 없기 때문에 조금 혼란 스럽습니다. 우리가'acceptBusinessTravel()'메소드를 보여 주었던 점은 무엇입니까? – Andreas
http://idownvotedbecau.se/noexceptiondetails/ – Andreas
@Andreas 어쩌면 당신은 @ MongoObjectId를 놓쳤을 것입니다,이 anotation은 클래스에서 mongo object id를 사용할 수있게하지만, 넣지 않으면 '_id'가 어쨌든 장면 ... : - | –