JSON은 List <T>로 역 직렬화

BaltoStar

ASP.NET Web API GET 엔드 ​​포인트가 있습니다.

public class MyType
{
  public bool Active { get; set; }
  public DateTime CreateDate { get; set; }
  public int Id { get; set; }
  public string Description { get; set; }
}

public class MyResponse
{
  public List<MyType> Results { get; set; }
}

[HttpGet]
public MyResponse GetResults()

결과에 2 개의 항목이 포함 된 경우 json 반환 문자열은 다음과 같습니다.

{"Results":[{"Active":true,"CreateDate":"2014-01-01T00:00:00","Id":1,"Description":"item 1 description"},{"Active":true,"CreateDate":"2014-01-01T00:00:00","Id":2,"Description":"item 2 description"}]}

클라이언트 측에서 json을 역 직렬화하고 싶습니다. List<MyType>

(간결함의 이름으로 언어가 약간 느슨 함)

List<MyType> results = HttpResponseMessage.Content.ReadAsAsync<List<MyType>>(new [] { new JsonMediaTypeFormatter () }).Result;

하지만 이것은 예외를 던집니다

Newtonsoft.Json.JsonSerializationException: Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.Collections.Generic.List`1[MyType]' because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly.
To fix this error either change the JSON to a JSON array (e.g. [1,2,3]) or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.

   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
   at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
   at Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader, Type objectType)
   at System.Net.Http.Formatting.JsonMediaTypeFormatter.<>c__DisplayClass8.<ReadFromStreamAsync>b__6()
   at System.Threading.Tasks.TaskHelpers.RunSynchronously[TResult](Func`1 func, CancellationToken cancellationToken)
베이트 테크

MyResponse클래스는이 ReadAsAsync 메소드를 호출 할 때 사용되어야하는 유형이 있으므로, JSON으로 직렬화지고 것입니다.

MyResponse responseContent = HttpResponseMessage.Content.ReadAsAsync<MyResponse>(new [] { new JsonMediaTypeFormatter () });

그런 다음 결과 목록에 액세스하려면 responseContent.Results

내가 본 예제에서 IEnumerable<MediaTypeFormatter>매개 변수를 생략 할 수도 있으므로 이것도 작동 할 수 있습니다. http://msdn.microsoft.com/en-us/library/hh944541(v=vs.118).aspx

MyResponse responseContent = HttpResponseMessage.Content.ReadAsAsync<MyResponse>();

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

URL에서 C #의 List <T>로 여러 Json 개체 역 직렬화

분류에서Dev

C #에서 List <T> 직렬화 및 js 배열로 역 직렬화

분류에서Dev

RestSharp로 JSON 역 직렬화

분류에서Dev

런타임의 형식으로 List <T> 역 직렬화

분류에서Dev

Jackson : 문자열 배열을 List <T>로 역 직렬화

분류에서Dev

xml을 List <T>로 역 직렬화 할 수 없습니다.

분류에서Dev

JSON을 Dictionary <string, List <string >>으로 역 직렬화

분류에서Dev

개체 직렬화 후 list <object> C #으로 역 직렬화

분류에서Dev

FaultException <T>를 FaultException으로 역 직렬화

분류에서Dev

Xml을 List <T>로 역 직렬화-xmlns = ''가 예상되지 않았습니다.

분류에서Dev

json.net으로 JSON 역 직렬화

분류에서Dev

ServiceStack은 객체로 사전 직렬화 및 역 직렬화

분류에서Dev

C #으로 json 역 직렬화

분류에서Dev

Gson으로 JSON 역 직렬화

분류에서Dev

Collection + JSON 객체로 역 직렬화

분류에서Dev

동적 개체로 JSON 역 직렬화

분류에서Dev

JSON을 C # 개체로 역 직렬화

분류에서Dev

newtonsoft로 json 배열 역 직렬화

분류에서Dev

JSON을 .net 객체로 역 직렬화

분류에서Dev

"무작위"키로 JSON 역 직렬화

분류에서Dev

Newtonsoft.Json으로 역 직렬화

분류에서Dev

gson 및 개조로 json 역 직렬화

분류에서Dev

JSON을 C #의 Dictionary <string, List <string >>으로 역 직렬화하려고합니다.

분류에서Dev

JSON 역 직렬화

분류에서Dev

Newton JSON은 객체로 역 직렬화합니다.

분류에서Dev

.NET DataContractJsonSerializer serializer를 사용하여 사전으로 JSON 직렬화 / 역 직렬화

분류에서Dev

.NET DataContractJsonSerializer serializer를 사용하여 사전으로 JSON 직렬화 / 역 직렬화

분류에서Dev

직렬화 후 저지로 json을 역 직렬화 할 수 없습니까?

분류에서Dev

C #에서 JSON으로 직렬화하고 TS에서 역 직렬화

Related 관련 기사

  1. 1

    URL에서 C #의 List <T>로 여러 Json 개체 역 직렬화

  2. 2

    C #에서 List <T> 직렬화 및 js 배열로 역 직렬화

  3. 3

    RestSharp로 JSON 역 직렬화

  4. 4

    런타임의 형식으로 List <T> 역 직렬화

  5. 5

    Jackson : 문자열 배열을 List <T>로 역 직렬화

  6. 6

    xml을 List <T>로 역 직렬화 할 수 없습니다.

  7. 7

    JSON을 Dictionary <string, List <string >>으로 역 직렬화

  8. 8

    개체 직렬화 후 list <object> C #으로 역 직렬화

  9. 9

    FaultException <T>를 FaultException으로 역 직렬화

  10. 10

    Xml을 List <T>로 역 직렬화-xmlns = ''가 예상되지 않았습니다.

  11. 11

    json.net으로 JSON 역 직렬화

  12. 12

    ServiceStack은 객체로 사전 직렬화 및 역 직렬화

  13. 13

    C #으로 json 역 직렬화

  14. 14

    Gson으로 JSON 역 직렬화

  15. 15

    Collection + JSON 객체로 역 직렬화

  16. 16

    동적 개체로 JSON 역 직렬화

  17. 17

    JSON을 C # 개체로 역 직렬화

  18. 18

    newtonsoft로 json 배열 역 직렬화

  19. 19

    JSON을 .net 객체로 역 직렬화

  20. 20

    "무작위"키로 JSON 역 직렬화

  21. 21

    Newtonsoft.Json으로 역 직렬화

  22. 22

    gson 및 개조로 json 역 직렬화

  23. 23

    JSON을 C #의 Dictionary <string, List <string >>으로 역 직렬화하려고합니다.

  24. 24

    JSON 역 직렬화

  25. 25

    Newton JSON은 객체로 역 직렬화합니다.

  26. 26

    .NET DataContractJsonSerializer serializer를 사용하여 사전으로 JSON 직렬화 / 역 직렬화

  27. 27

    .NET DataContractJsonSerializer serializer를 사용하여 사전으로 JSON 직렬화 / 역 직렬화

  28. 28

    직렬화 후 저지로 json을 역 직렬화 할 수 없습니까?

  29. 29

    C #에서 JSON으로 직렬화하고 TS에서 역 직렬화

뜨겁다태그

보관