나는 this 자습서를 따라 편안한 웹 API 서비스를 만들었습니다. 모든 것이 잘 작동하는 것처럼 보였습니다. JSON 형식의 모든 예약은 올바른 URL에서 요청하여 얻을 수 있습니다. 내 문제는 http POST입니다.asp.net Web-Api JSON 문자열 역 직렬화
내 자바 스크립트는 다음과 같습니다
var url = 'http://localhost:9077/api/bookings';
....
var newEvent = [];
newEvent.EventDateTime = // (now);
newEvent.Name = "MyFirstBooking";
function btnSubmit_Click()
{
alert("Submit clicked: " + newEvent.Name + "\n" + newEvent.EventDateTime);
$.ajax({
type: "POST",
url: url,
data: JSON.stringify({ Bookings: newEvent }),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data) { alert(data); }
});
}
경고가 정확한 날짜와 또한 올바른 이름을 표시합니다. 내가 제출하고는 JSON이 올바르게 포맷과 같은 피들러 확인을 클릭하면 :
내 BookingsController에서public class Bookings
{
public int ID { get; set; }
public string Name { get; set; }
public DateTime BookingDateTime { get; set; }
public DateTime EventDateTime { get; set; }
public int Duration { get; set; }
public int UserID { get; set; }
}
내가 가진 :
{"Bookings":[{"Name":"MyFirstBooking","EventDateTime":"2014-04-14T13:45:00.000Z"}]}
내보기 Bookings.cs입니다
public HttpResponseMessage PostBooking(Bookings item)
{
// Implementation
}
그러나 PostBooking 후에 중단 점을 넣으면 item.EventDateTime은 {01/01/0001 00:00:00}이고 Name은 null입니다. JSON이 제대로 deserialised되고 있지 않은 것 같습니다 ...? 나는 그것이 어디에서 언급했는지 찾을 수 없기 때문에 이것이 어디에서 일어나는 지 확신하지 못한다 ...
고마워.
DateTime 개체를 제거하고 'UserID'속성에 대한 참조를 넣었으므로 이제 Javascript에서 모든 DateTime obj에 대한 참조가 없으며 항목에 대해 여전히 'null'이 표시됩니다. 나는'newEvent = {};를 변경했다. 내 새 JSON 문자열은 {{ "item": { "Name": "MyFirstBooking", "UserID": 2}}' – cdsln
tomasofen의 답변도 시도 했습니까? 나는 그가 옳을 수도 있다고 생각한다. – kmacdonald
우리는 서버 측에서 예약에 대한 정의를 알지 못하지만, 그것에 대해 생각할 때, 그것은 복수형이며 실제로는 어떤 종류의 수집 일 것입니다. 당신은 서버 함수의 항목의 정의를 단순히 객체의 배열로 바꾸는 테스트를 시도 할 수 있습니다 ... – tomasofen