C # HttpResponseMessage를 개체로 역 직렬화

Mattias

HttpResponseMessage를 개체로 deserialize하는 데 문제가 있습니다. 문제는 객체가 역 직렬화되어야 할 때 모든 필드가 null이면 예외가 발생하지 않는다는 것입니다.

HttpContent content = new StringContent(xml);
content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("text/xml");
HttpResponseMessage response = await client.PostAsync("URL", content).ConfigureAwait(false);
// Parse response
if (response.IsSuccessStatusCode)
{
    XmlSerializer serializer = new XmlSerializer(typeof(ResponseObject));
    Stream responseStream = await response.Content.ReadAsStreamAsync();
    ResponseObject responseObject = serializer.Deserialize(responseStream) as ResponseObject;

    //Possible example of wrong data
    Console.WriteLine(responseObject.Message);
}

[XmlRoot("response")]
public class ResponseObject
{
    [XmlElement("session")]
    public string Session { get; set; }

    [XmlElement("status")]
    public string Status { get; set; }

    [XmlElement("message")]
    public string Message { get; set; }
}

문자열로 된 응답 메시지

"<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>
<response>
    <val n=\"session\">SESSION ID</val>
    <val n=\"status\">201</val>
    <val n=\"message\">Created</val>
</response>"

내가 뭔가를 놓친 적이 있습니까? 직렬화 / 역 직렬화에 꽤 익숙합니다. 포인터에 감사드립니다.

Mattias

좋아요 댓글에 Eser와 Biscuits의 도움으로 해결했습니다.

저는 코드를 재사용하려고했지만 이전 프로젝트와 다른 구조를 갖는 응답 메시지에 대해 생각하지 않았습니다.

내 ResponseObject를 다음과 같이 변경했습니다.

[XmlRoot("response")]
public abstract class ResponseObject
{
    [XmlIgnore]
    public bool Success { get; set; }

    [XmlIgnore]
    public string Session
    {
        get
        {
            var result = Values.FirstOrDefault(n => n.Name == "session");
            return result.Value;
        }
    }

    [XmlIgnore]
    public string Status
    {
        get
        {
            var result = Values.FirstOrDefault(n => n.Name == "status");
            return result.Value;
        }
    }

    [XmlIgnore]
    public string Message
    {
        get
        {
            var result = Values.FirstOrDefault(n => n.Name == "message");
            return result.Value;
        }
    }

    [XmlElement("val")]
    public List<ResponseXmlWrapper<string>> Values;
}

public class ResponseXmlWrapper<T>
{
    [XmlAttribute("n")]
    [JsonProperty("n")]
    public string Name { get; set; }

    [XmlText]
    [JsonProperty()]
    public T Value { get; set; }

    public ResponseXmlWrapper()
    {

    }

    public ResponseXmlWrapper(string attributeName, T value)
    {
        Name = attributeName;
        Value = value;
    }
}

이것이 최적의 솔루션인지 모르겠지만 작동합니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

HttpResponseMessage를 모델 개체로 역 직렬화 할 수 없음

분류에서Dev

JSON 개체를 .Net 목록으로 역 직렬화 (C #)

분류에서Dev

JsonObject를 C # 개체로 역 직렬화하지 않음

분류에서Dev

JSON을 C # 개체로 역 직렬화

분류에서Dev

xml 개체 C #으로 역 직렬화

분류에서Dev

ExpandoObject를 개체로 역 직렬화

분류에서Dev

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

분류에서Dev

XML 역 직렬화 다른 개체 C #

분류에서Dev

C #에서 JSON 개체 역 직렬화

분류에서Dev

Json 개체를 .NET 개체로 역 직렬화

분류에서Dev

C ++ MFC에서 이진 직렬화 된 개체를 C #에서 역 직렬화 할 수 있습니까?

분류에서Dev

파일에서 개체를 역 직렬화 및 재 직렬화하는 데 문제가있는 C # JSON.net

분류에서Dev

JSON 배열을 C # 개체로 역 직렬화 (TFL API)

분류에서Dev

값 목록을 C # 개체로 역 직렬화하는 방법

분류에서Dev

JSON 문자열을 C # 및 Unity의 개체로 역 직렬화

분류에서Dev

JSON 파일을 개체 C #으로 역 직렬화

분류에서Dev

C #에서 XML을 개체로 역 직렬화하는 방법

분류에서Dev

json 문자열을 개체 C # .net으로 역 직렬화

분류에서Dev

CSV 문자열을 C # 개체로 역 직렬화

분류에서Dev

JSON을 C # 개체 목록으로 역 직렬화

분류에서Dev

C # XML을 개체 목록으로 역 직렬화

분류에서Dev

일반 객체를 문자열로 직렬화 / 역 직렬화

분류에서Dev

C #에서 Newtonsoft를 사용하여 중첩 된 JSON 개체의 역 직렬화

분류에서Dev

xamarin c # 중첩 된 개체를 포함하는 Json 역 직렬화

분류에서Dev

JSON 개체를 배열로 역 직렬화

분류에서Dev

JSON 개체를 배열로 역 직렬화

분류에서Dev

JSON 개체를 System.Guid 형식으로 역 직렬화

분류에서Dev

C #에서는 간단한 JSON 개체를 정수 목록으로 역 직렬화합니다.

분류에서Dev

Objective-C를 사용하여 JSON을 사용자 지정 개체로 역 직렬화

Related 관련 기사

  1. 1

    HttpResponseMessage를 모델 개체로 역 직렬화 할 수 없음

  2. 2

    JSON 개체를 .Net 목록으로 역 직렬화 (C #)

  3. 3

    JsonObject를 C # 개체로 역 직렬화하지 않음

  4. 4

    JSON을 C # 개체로 역 직렬화

  5. 5

    xml 개체 C #으로 역 직렬화

  6. 6

    ExpandoObject를 개체로 역 직렬화

  7. 7

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

  8. 8

    XML 역 직렬화 다른 개체 C #

  9. 9

    C #에서 JSON 개체 역 직렬화

  10. 10

    Json 개체를 .NET 개체로 역 직렬화

  11. 11

    C ++ MFC에서 이진 직렬화 된 개체를 C #에서 역 직렬화 할 수 있습니까?

  12. 12

    파일에서 개체를 역 직렬화 및 재 직렬화하는 데 문제가있는 C # JSON.net

  13. 13

    JSON 배열을 C # 개체로 역 직렬화 (TFL API)

  14. 14

    값 목록을 C # 개체로 역 직렬화하는 방법

  15. 15

    JSON 문자열을 C # 및 Unity의 개체로 역 직렬화

  16. 16

    JSON 파일을 개체 C #으로 역 직렬화

  17. 17

    C #에서 XML을 개체로 역 직렬화하는 방법

  18. 18

    json 문자열을 개체 C # .net으로 역 직렬화

  19. 19

    CSV 문자열을 C # 개체로 역 직렬화

  20. 20

    JSON을 C # 개체 목록으로 역 직렬화

  21. 21

    C # XML을 개체 목록으로 역 직렬화

  22. 22

    일반 객체를 문자열로 직렬화 / 역 직렬화

  23. 23

    C #에서 Newtonsoft를 사용하여 중첩 된 JSON 개체의 역 직렬화

  24. 24

    xamarin c # 중첩 된 개체를 포함하는 Json 역 직렬화

  25. 25

    JSON 개체를 배열로 역 직렬화

  26. 26

    JSON 개체를 배열로 역 직렬화

  27. 27

    JSON 개체를 System.Guid 형식으로 역 직렬화

  28. 28

    C #에서는 간단한 JSON 개체를 정수 목록으로 역 직렬화합니다.

  29. 29

    Objective-C를 사용하여 JSON을 사용자 지정 개체로 역 직렬화

뜨겁다태그

보관