직렬화 가능한 객체의 배열로 클래스를 역 직렬화하는 방법

샤 라피

직렬화 된 클래스 (요소라는 이름)의 배열이있는 클래스가 있습니다. 이 클래스를 직렬화 한 다음이를 역 직렬화하고 싶습니다. 그러나 역 직렬화는 어렵습니다.

직렬화되기 전에 배열의 요소 유형을 모르기 때문에 두 개의 배열이 요소 배열과 일치합니다. 하나 ( typeOfElements)는 요소 유형을 유지하고 다른 ( serializedElemnt)은 직렬화 된 요소 문자열을 유지합니다. 하지만 내 주 요소 배열을 만드는 방법을 deserialize 한 후에는 모르겠습니다. 기본 배열을 만들기 위해 유형을 클래스로 변환하려면 어떻게해야합니까?

[ProtoContract]
class MyClass
{
    .
    .

    public MyClass()
    {
    }

    object[] elements;

    [ProtoMember(1)]
    string[] SerilizedElements;

    [ProtoMember(2)]
    string[] TypeOfElements;

    [ProtoBeforeSerialization]
    void initBeforeSerilize()
    {
        TypeOfElements = new string[elements.Length];

        SerilizedElements = new string[elements.Length];

        for (int i = 0; i < elements.Length; i++)
        {
                TypeOfElements[i] = elements[i].GetType().ToString();

                using (MemoryStream ms = new MemoryStream())
                {
                    Serializer.Serialize(ms, elements[i]);
                    SerilizedElements[i] = Encoding.UTF8.GetString(ms.ToArray());
                }
        } 
    }

    [ProtoAfterDeserialization]
    void initAfterSerilize()
    {
        for (int i = 0; i < SerilizedElements.Length; i++)
        {
              Type t = Type.GetType(TypeOfElements[i]);

              using(MemoryStream ms=new MemoryStream(Encoding.ASCII.GetBytes(SerilizedElements[i])))
              {
                    //I don't know how to write this line
                    elements[i]=Serializer.Deserialize<t>(ms);
              }
        }
    }
}
마크 그 라벨

"I only know the type at runtime"문제의 경우 Serializer.NonGeneric를 참조하십시오 Type. 여기 에는 . 비 일반 API는 v2 API의 기본 API이기도합니다 TypeModel. 문자열 인코딩 문제는 이미 언급되었습니다. 문자열이 필요하면 base-64를 사용해야하지만 개인적으로 byte[]. 또한 알 수없는 유형 대신 상속을 사용할 수 있는지 여부에 대해 생각하는 것이 좋습니다. 후보 유형의 수가 유한하고 알려진 경우 이는 확실히 가능합니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

클래스 문자열 값으로 개체를 역 직렬화하는 방법

분류에서Dev

Immutablejs : 복잡한 JS 객체를 역 직렬화하는 방법

분류에서Dev

다양한 유형의 객체를 포함하는 JSON 배열 역 직렬화

분류에서Dev

단일 노드로 XML을 역 직렬화하기 위해 직렬화 가능한 클래스를 만드는 방법은 무엇입니까?

분류에서Dev

역 직렬화 할 수없는 일부 개체를 포함하는 배열 역 직렬화 (역 직렬화 가능 부분 구하기)

분류에서Dev

JSON 데이터를 모델 객체의 배열로 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

JSON 문자열을 객체로 역 직렬화하는 방법

분류에서Dev

xsd.exe를 사용한 역 직렬화-DataSet이 아닌 개체로 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

여러 개체를 단일 XML 파일로 직렬화 / 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

하나의 클래스에서 가능한 여러 개체 이름으로 JSON 문자열 역 직렬화

분류에서Dev

동일한 이름의 새 개체로 개체를 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

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

분류에서Dev

Jackson ObjectMapper는 배열로 객체를 역 직렬화합니다.

분류에서Dev

클래스 객체를 xml 문서로 직렬화하는 방법

분류에서Dev

serde를 사용하여 JSON 배열을 구조체로 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

kotlinx.serialization으로 역 직렬화를 가로채는 방법

분류에서Dev

JObject의 구성 가능한 역 직렬화를 허용하는 방법은 무엇입니까?

분류에서Dev

자바 : 가능한 한 적은 출력 바이트로 객체를 바이트 배열로 직렬화하는 방법은 무엇입니까?

분류에서Dev

객체를 사전으로 역 직렬화하는 JSON

분류에서Dev

RenderedImage를 텍스트 문자열로 직렬화 및 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

Json 파일의 일부만 클래스 C #으로 역 직렬화하는 방법

분류에서Dev

객체를 직렬화하고 원래 객체와 동일한 클래스로 다시 캐스팅하는 방법

분류에서Dev

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

분류에서Dev

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

분류에서Dev

강력한 형식의 개체로 JSON 응답을 직접 역 직렬화 할 때 필드를 피하는 방법은 무엇입니까?

분류에서Dev

역 직렬화 된 개체를 사용하는 방법?

분류에서Dev

Web API에서 클래스로 JSON을 역 직렬화하는 방법

분류에서Dev

객체를 json으로 직렬화하는 JavaEE 방법

분류에서Dev

사진 plist의 IPXDefaultLibraryURLBookmark를 역 직렬화하는 방법

Related 관련 기사

  1. 1

    클래스 문자열 값으로 개체를 역 직렬화하는 방법

  2. 2

    Immutablejs : 복잡한 JS 객체를 역 직렬화하는 방법

  3. 3

    다양한 유형의 객체를 포함하는 JSON 배열 역 직렬화

  4. 4

    단일 노드로 XML을 역 직렬화하기 위해 직렬화 가능한 클래스를 만드는 방법은 무엇입니까?

  5. 5

    역 직렬화 할 수없는 일부 개체를 포함하는 배열 역 직렬화 (역 직렬화 가능 부분 구하기)

  6. 6

    JSON 데이터를 모델 객체의 배열로 역 직렬화하는 방법은 무엇입니까?

  7. 7

    JSON 문자열을 객체로 역 직렬화하는 방법

  8. 8

    xsd.exe를 사용한 역 직렬화-DataSet이 아닌 개체로 역 직렬화하는 방법은 무엇입니까?

  9. 9

    여러 개체를 단일 XML 파일로 직렬화 / 역 직렬화하는 방법은 무엇입니까?

  10. 10

    하나의 클래스에서 가능한 여러 개체 이름으로 JSON 문자열 역 직렬화

  11. 11

    동일한 이름의 새 개체로 개체를 역 직렬화하는 방법은 무엇입니까?

  12. 12

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

  13. 13

    Jackson ObjectMapper는 배열로 객체를 역 직렬화합니다.

  14. 14

    클래스 객체를 xml 문서로 직렬화하는 방법

  15. 15

    serde를 사용하여 JSON 배열을 구조체로 역 직렬화하는 방법은 무엇입니까?

  16. 16

    kotlinx.serialization으로 역 직렬화를 가로채는 방법

  17. 17

    JObject의 구성 가능한 역 직렬화를 허용하는 방법은 무엇입니까?

  18. 18

    자바 : 가능한 한 적은 출력 바이트로 객체를 바이트 배열로 직렬화하는 방법은 무엇입니까?

  19. 19

    객체를 사전으로 역 직렬화하는 JSON

  20. 20

    RenderedImage를 텍스트 문자열로 직렬화 및 역 직렬화하는 방법은 무엇입니까?

  21. 21

    Json 파일의 일부만 클래스 C #으로 역 직렬화하는 방법

  22. 22

    객체를 직렬화하고 원래 객체와 동일한 클래스로 다시 캐스팅하는 방법

  23. 23

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

  24. 24

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

  25. 25

    강력한 형식의 개체로 JSON 응답을 직접 역 직렬화 할 때 필드를 피하는 방법은 무엇입니까?

  26. 26

    역 직렬화 된 개체를 사용하는 방법?

  27. 27

    Web API에서 클래스로 JSON을 역 직렬화하는 방법

  28. 28

    객체를 json으로 직렬화하는 JavaEE 방법

  29. 29

    사진 plist의 IPXDefaultLibraryURLBookmark를 역 직렬화하는 방법

뜨겁다태그

보관