.NET의 필드를 기반으로 json 역 직렬화 (C #)

크리스티안 댄 |

다음 Json과 같은 개체 목록 을 가져 오는 앱을 작성 중입니다.

[
   {
       "ObjectType": "apple",
       "ObjectSize": 35,
       "ObjectCost": 4,
       "ObjectTaste": "good",
       "ObjectColor": "golden"
   },
   {
       "ObjectType": "books",
       "ObjectSize": 53,
       "ObjectCost": 7,
       "Pages": 100
   },
   {
       "ObjectType": "melon",
       "ObjectSize": 35,
       "ObjectTaste": "good",
       "ObjectCost": 5
   },
   {
       "ObjectType": "apple",
       "ObjectSize": 29,
       "ObjectCost": 8,
       "ObjectTaste": "almost good",
       "ObjectColor": "red"
   }
  ]

기본 클래스 ItemToSell(크기, 비용)를 만들고 여기에서 Apple, Melon 및 Book을 파생시킨 다음 " ObjectType"필드를 기반으로 어떤 클래스에 맞는 역 직렬화를 수행 하고 싶습니다 . ItemToSell모든 개체가 Apple, Melon 또는 Book 개체 목록을 작성하고 싶습니다 .

.Net에서 어떻게 할 수 있습니까?

미리 감사드립니다 :)

편집 : 포함 할 수있는 모든 필드가있는 Big 클래스에서 역 직렬화하는 방법을 알고 있습니다 Base(ObjectType,ObjectSize,ObjectCost,ObjectColor,Pages). 그러나 ObjectType모든 책 항목이나 모든 책에 대해 Pages 필드와 같은 유용성 필드가 없도록 클래스를 구분하기를 원합니다 ObjectTaste.

드리 스 마르크 만

얼마 전에 나는 같은 문제가 있었다.

Json.NET을 사용할 수 있지만 json 문서를 제어 할 수없는 경우 (예 : '다른 프레임 워크에 의해 직렬화되었습니다') 다음과 같은 사용자 지정 JsonConverter를 만들어야합니다.

class MyItemConverter : JsonConverter
{
    public override bool CanConvert(Type objectType)
    {
        return typeof(ItemToSell).IsAssignableFrom(objectType);
    }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        JObject obj = JObject.Load(reader);
        string discriminator = (string)obj["ObjectType"];

        ItemToSell item;
        switch (discriminator)
        {
            case "apple":
                item = new Apple();
                break;
            case "books":
                item = new Books();
                break;
            case "melon":
                item = new Melon();
                break;
            default:
                throw new NotImplementedException();
        }

        serializer.Populate(obj.CreateReader(), item);

        return item;

    }


    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {

    }
}

그런 다음 JsonSerializerSettings의 변환기에 다음과 같이 추가해야합니다.

JsonSerializerSettings settings = new JsonSerializerSettings
{
    TypeNameHandling = TypeNameHandling.Objects,

};
settings.Converters.Add(new MyItemConverter());
var items = JsonConvert.DeserializeObject<List<ItemToSell>>(response, settings);

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

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

분류에서Dev

Protobuf-net 문자열 필드를 C # GUID로 역 직렬화

분류에서Dev

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

분류에서Dev

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

분류에서Dev

json.net으로 JSON 역 직렬화

분류에서Dev

중첩 된 객체의 필드 중 하나를 기반으로 중첩 된 JSON 객체를 기본 유형으로 역 직렬화하는 방법

분류에서Dev

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

분류에서Dev

C #으로 json 역 직렬화

분류에서Dev

C #의 JSON 배열을 목록으로 역 직렬화

분류에서Dev

JSON을 C #으로 역 직렬화-확인란의 값

분류에서Dev

Utf8Json은 마커 필드를 기반으로 유형으로 역 직렬화합니다.

분류에서Dev

c #-특정 JSON의 역 직렬화

분류에서Dev

json.net 객체 배열로 역 직렬화 C #

분류에서Dev

Django 나머지 프레임 워크. json 필드를 모델의 다른 필드로 역 직렬화

분류에서Dev

Json.Net 반환 Null 역 직렬화

분류에서Dev

C #에서 크기 1의 JSON 배열 역 직렬화

분류에서Dev

JSON을 C # 개체로 역 직렬화

분류에서Dev

JSON.NET으로 이상한 구조의 JSON 역 직렬화

분류에서Dev

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

분류에서Dev

C #의 클래스로 json 역 직렬화

분류에서Dev

C # 임의 키로 시작하는 Facebook JSON 역 직렬화

분류에서Dev

JSON을 .net 객체로 역 직렬화

분류에서Dev

C #에서 int를 키로 사용하는 JSON 역 직렬화

분류에서Dev

KClass (Reflection)를 기반으로 필드 이름 및 값의 맵을 데이터 클래스로 역 직렬화

분류에서Dev

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

분류에서Dev

JSON.NET으로 Noda Time의 LocalDateTime 역 직렬화

분류에서Dev

JSON C # 역 직렬화

분류에서Dev

c # Json 역 직렬화 식

분류에서Dev

C # : JSON 역 직렬화

Related 관련 기사

  1. 1

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

  2. 2

    Protobuf-net 문자열 필드를 C # GUID로 역 직렬화

  3. 3

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

  4. 4

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

  5. 5

    json.net으로 JSON 역 직렬화

  6. 6

    중첩 된 객체의 필드 중 하나를 기반으로 중첩 된 JSON 객체를 기본 유형으로 역 직렬화하는 방법

  7. 7

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

  8. 8

    C #으로 json 역 직렬화

  9. 9

    C #의 JSON 배열을 목록으로 역 직렬화

  10. 10

    JSON을 C #으로 역 직렬화-확인란의 값

  11. 11

    Utf8Json은 마커 필드를 기반으로 유형으로 역 직렬화합니다.

  12. 12

    c #-특정 JSON의 역 직렬화

  13. 13

    json.net 객체 배열로 역 직렬화 C #

  14. 14

    Django 나머지 프레임 워크. json 필드를 모델의 다른 필드로 역 직렬화

  15. 15

    Json.Net 반환 Null 역 직렬화

  16. 16

    C #에서 크기 1의 JSON 배열 역 직렬화

  17. 17

    JSON을 C # 개체로 역 직렬화

  18. 18

    JSON.NET으로 이상한 구조의 JSON 역 직렬화

  19. 19

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

  20. 20

    C #의 클래스로 json 역 직렬화

  21. 21

    C # 임의 키로 시작하는 Facebook JSON 역 직렬화

  22. 22

    JSON을 .net 객체로 역 직렬화

  23. 23

    C #에서 int를 키로 사용하는 JSON 역 직렬화

  24. 24

    KClass (Reflection)를 기반으로 필드 이름 및 값의 맵을 데이터 클래스로 역 직렬화

  25. 25

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

  26. 26

    JSON.NET으로 Noda Time의 LocalDateTime 역 직렬화

  27. 27

    JSON C # 역 직렬화

  28. 28

    c # Json 역 직렬화 식

  29. 29

    C # : JSON 역 직렬화

뜨겁다태그

보관