2016-09-23 3 views
0

나는이 같은 /api/progression/<project-id> 엔드 포인트를 호출 문어 클라이언트 (github source)를 사용하여 특정 프로젝트에 대한 진행을 해제 얻기 위해 노력하고 있어요에 배포 된 딕셔너리를 구문 분석 할 수 없습니다 :문어 클라이언트는 ReleaseProgressionResource

서버에서 응답을 처리 할 수 ​​없습니다 : 현재 JSON 객체를 직렬화 할 수 없습니다 (예 : { "이름": "값"}) 유형 에 'System.Linq.IOrderedEnu merplable`1 [Octopus.Client.Model.DashboardItemResource] ' 유형에 JSON 배열이 필요하기 때문에 (예 : [1,2,3]) 을 올바르게 deserialize하십시오. 이 오류를 수정하려면 JSON 배열을 JSON 배열 (예 : [1,2,3])로 변경하거나 deserialized 형식을 일반 .NET 형식으로 변경하십시오 (예 : 정수가 아닌 컬렉션과 같은 기본 유형 JSON 객체에서 역 직렬화 할 수있는 은 배열 또는 List와 비슷합니다. JsonObjectAttribute를 유형에 추가하여 이 JSON 객체에서 비 직렬화되도록 할 수도 있습니다. 응답 내용 : { "환경": [ { "Id": "Environience-1", "이름 : 035.Deployments.Environments-1.Id ', 줄 55, ":"는 Releases에서 테스트 환경 " } (ReleaseProgressionResource 형의) 각 릴리스에서

유형의 Dictionary<string,IOrderedEnumerable<DashboardItemResource>>Deployments 소품있다. 그러나 클라이언트 (이 API를 사용하도록 만들어 졌음)가이를 직렬화 할 수없는 것처럼 보입니다. 예외 메시지에서 클라이언트가 JSON 배열로 구문 분석하려고하는 것처럼 보입니다.

여기에 (일부 더미 데이터) 원시 JSON에서 엔드 포인트 응답의 샘플 Deployments 부분 :

"Deployments": { 
     "Environments-1": { 
      "Id": "Deployments-12345", 
      "ProjectId": "Projects-123", 
      "EnvironmentId": "Environments-1", 
      "ReleaseId": "Releases-12345", 
      "DeploymentId": "Deployments-12345", 
      "TaskId": "ServerTasks-12345", 
      "ReleaseVersion": "5.4.3", 
      "Created": "2016-09-22T21:26:38.886+00:00", 
      "QueueTime": "2016-09-22T21:26:38.855+00:00", 
      "CompletedTime": "2016-09-22T21:29:48.355+00:00", 
      "State": "Success", 
      "HasPendingInterruptions": false, 
      "HasWarningsOrErrors": false, 
      "ErrorMessage": "", 
      "Duration": "3 minutes", 
      "IsCurrent": true, 
      "IsPrevious": false, 
      "IsCompleted": true, 
      "Links": { 
      "Self": "/api/deployments/Deployments-12345", 
      "Release": "/api/releases/Releases-12345", 
      "Task": "/api/tasks/ServerTasks-12345" 
      } 
     } 
} 

사람이 내가 잘못 일을 할 수있는 어떤 일이있을 수있는 어떤 아이디어를 /이 있습니까? 미리 감사드립니다.

답변

0

전체 Deployment 개체입니까? JSON 객체는 대괄호로 묶어야합니다.

{ 
    "Deployments": { 
     "Environments-1": { 
      "Id": "Deployments-12345", 
      "ProjectId": "Projects-123", 
      "EnvironmentId": "Environments-1", 
      "ReleaseId": "Releases-12345", 
      "DeploymentId": "Deployments-12345", 
      "TaskId": "ServerTasks-12345", 
      "ReleaseVersion": "5.4.3", 
      "Created": "2016-09-22T21:26:38.886+00:00", 
      "QueueTime": "2016-09-22T21:26:38.855+00:00", 
      "CompletedTime": "2016-09-22T21:29:48.355+00:00", 
      "State": "Success", 
      "HasPendingInterruptions": false, 
      "HasWarningsOrErrors": false, 
      "ErrorMessage": "", 
      "Duration": "3 minutes", 
      "IsCurrent": true, 
      "IsPrevious": false, 
      "IsCompleted": true, 
      "Links": { 
       "Self": "/api/deployments/Deployments-12345", 
       "Release": "/api/releases/Releases-12345", 
       "Task": "/api/tasks/ServerTasks-12345" 
      } 
     } 
    } 
} 
+0

아니요. 직렬화에 실패한 부분이 아닙니다. 그것은 더 큰 구조의 일부입니다. deserializer가'Environments-1'이라는 이름의 프로퍼티를 가진 객체로서 그것을 파싱하려고 시도 할 때,'DeployProgressionResources'의 집합을 가진'ProgressionResource'를 가져옵니다.이 패키지는 deserialize에 실패한'Deployments' 사전을 대신 가지고 있습니다. 딕트로서. – valorl