2016-08-30 2 views
0

나는 간단한 API가 POSTMAN에서 다음 ASP.NET 코어Json을 사용하여 우편 배달부를 사용하여 사전 유형을 게시하는 방법은 무엇입니까?

[Route("api/[controller]/[action]")] 
public class WorkunitController : Controller 
{ 
    private IRepository _repository = null; 
    public WorkunitController(IRepository repositoty) 
    { 
     _repository = repositoty; 
    }  

    [HttpPost] 
    public async Task SetTransformed([FromBody]long id) 
    { 
     if (ModelState.IsValid) 
     { 
      await _repository.SetTransformed(id); 
     } 
    } 
    } 
} 

을 사용하여 개발 한 나는

  • 는 헤더에게
    • "의 Content-Type"등을 추가 다음

      • 설정 URL을했다 "application/json"
    • 설정 바디

      { "ID": 51437665009 } I 보내기에

    클릭, 내가 볼 요청이 서버에 제공하지만 ModelState.IsValid은 false이고 예외는 ModelState에있다

    • 예외 {Newtonsoft.Json.JsonSerializationException이 : 현재 JSON 객체를 직렬화 할 수 없습니다 (예 : 유형이 JSON 프리미티브 값 (예 : 문자열, 숫자, 부울, null)을 필요로하기 때문에 유형이 'System.Int64'유형 ({name ":"value "})으로 잘못 변환 될 수 있습니다. 이 오류를 수정하려면 JSON을 JSON 프리미티브 값 (예 : 문자열, 숫자, 부울, null)으로 변경하거나 일반 .NET 유형 (예 : integer와 같은 기본 유형이 아니라 비 직렬화 유형)으로 변경하십시오. 배열 또는 목록과 같은 컬렉션 유형 )은 JSON 객체의 비 직렬화 된 일 수 있습니다. JsonObjectAttribute를 유형에 추가하여 JSON 객체에서 역 직렬화하도록 할 수도 있습니다. Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject (JsonReader 리더 objectType의 유형, JsonContract 계약 JsonProperty 부재 JsonContainerContract containerContract, JsonProperty containerMember, 개체 existingValue)를 에서의 경로 'ID', 라인 (2), 위치 17 Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize (JsonReader 리더, 유형 objectType의, 부울 checkAdditionalContent)} System.Exception {Newtonsoft.Json.JsonSerializationException}

    나는 또한 데이터 형식으로 JSON을 사용하는 경우

    { \"id\":\"51437665009\"} 
    
  • 답변

    0

    id를 보내는 시도, 당신은

    public class PostModel 
    { 
        public long Id { get; set; } 
    } 
    
    [HttpPost] 
    public async Task SetTransformed([FromBody]PostModel model) 
    { 
        if (ModelState.IsValid) 
        { 
         await _repository.SetTransformed(id); 
        } 
    } 
    
    바인딩에 대한 사용자 정의 클래스를 작성해야
    관련 문제