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

r3plica

다음과 같은 POCO 클래스가 있습니다.

public class Item : Asset
{
    public int PlaylistId { get; set; }
    public int AssetId { get; set; }
    public double Duration { get; set; }
    public int Order { get; set; }
}

자산은 다음과 같습니다 :

public enum AssetType
{
    Image = 1,
    Video,
    Website
}

public class Asset
{       

    public int Id { get; set; }
    public string Name { get; set; }
    public string Filename { get; set; }
    public AssetType Type { get; set; }
    public string CreatedById { get; set; }
    public string ModifiedById { get; set; }
    [Display(Name="Created by")] public string CreatedBy { get; set; }
    [Display(Name="Modified by")] public string ModifiedBy { get; set; }
}

다음과 같은 json 파일이 있습니다.

{
   "Items":[
      {
         "PlaylistId":1,
         "Type":2,
         "Duration":19,
         "Filename":"stream1_mpeg4.avi"
      },
      {
         "PlaylistId":1,
         "Type":2,
         "Duration":21,
         "Filename":"stream2_mpeg4.avi"
      }
   ]
}

마지막으로 다음과 같은 코드가 있습니다.

public IList<Item> GetAll()
{
    if (File.Exists(itemsPath))
    {
        using (var fs = new FileStream(itemsPath, FileMode.Open))
        using (var sr = new StreamReader(fs))
        {
            var text = sr.ReadToEnd();
            var array = JsonConvert.DeserializeObject<Item[]>(sr.ReadToEnd());
            return array.ToList();
        }
    }
    else
        throw new FileNotFoundException("Unable to find the playlist, please make sure that " + itemsPath + " exists.");
}

텍스트 변수는 내가 예상하는대로 올바른 JSON 문자열을 포함하지만, 배열은 널 (null), 그러므로 array.ToList () ; 오류가 발생합니다. 내가 뭘 잘못하고 있는지 아는 사람이 있습니까?

미리 건배 / r3plica

발굴

ReadToEnd()두 번 호출 하므로 두 번째로 스트림에서 읽을 텍스트가 더 이상 없습니다.

var text = sr.ReadToEnd();
var array = JsonConvert.DeserializeObject<Item[]>(sr.ReadToEnd());

두 번째를 sr.ReadToEnd()text바꾸면 작동합니다.

var array = JsonConvert.DeserializeObject<Item[]>(text);

또한 @Sachin이 올바르게 지적했듯이 json은 객체 Items의 배열 또는 목록 이라는 속성이있는 객체를 나타냅니다 Item.
따라서 @Sachin의 답변에 표시된대로 중간 클래스를 통과하거나 다음과 같이 사전을 사용해야합니다.

var dict = JsonConvert.DeserializeObject<Dictionary<string,Item[]>>(text);
var array = dict["Items"];

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

json 문자열을 .NET 개체 목록으로 역 직렬화

분류에서Dev

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

분류에서Dev

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

분류에서Dev

JSON 배열 배열을 C # 클래스로 역 직렬화

분류에서Dev

루트 개체 및 1 배열 ASP.NET MVC없이 json 역 직렬화

분류에서Dev

이름이없는 배열로 C # JSON 역 직렬화

분류에서Dev

JSON 개체를 배열로 역 직렬화

분류에서Dev

배열 또는 중첩 배열을 포함 할 수있는 JSon의 객체로 Json.net 역 직렬화

분류에서Dev

C # JSON.net-비상 수 이름 개체의 유사 배열 개체 역 직렬화

분류에서Dev

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

분류에서Dev

Collection + JSON 객체로 역 직렬화

분류에서Dev

C #에서 JSON 역 직렬화 : 개체 대 배열

분류에서Dev

JSON 개체를 배열로 역 직렬화

분류에서Dev

C #에서 JSON 배열 역 직렬화

분류에서Dev

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

분류에서Dev

JSON을 C # 개체로 역 직렬화

분류에서Dev

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

분류에서Dev

JSON을 .net 객체로 역 직렬화

분류에서Dev

Json .Net은 플랫 객체를 복잡한 객체로 직렬화합니다 (직렬화 / 역 직렬화에 대한 객체 구조 변경).

분류에서Dev

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

분류에서Dev

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

분류에서Dev

json.net은 C #에서 json 객체를 역 직렬화합니다.

분류에서Dev

json.net으로 JSON 역 직렬화

분류에서Dev

VB.Net 개체로 JSON 역 직렬화

분류에서Dev

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

분류에서Dev

C #에서 JSON 개체 역 직렬화

분류에서Dev

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

분류에서Dev

GSON을 사용하여 객체의 JSON 배열 역 직렬화

분류에서Dev

Json.Net은 JSON 객체를 역 직렬화합니다.

Related 관련 기사

  1. 1

    json 문자열을 .NET 개체 목록으로 역 직렬화

  2. 2

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

  3. 3

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

  4. 4

    JSON 배열 배열을 C # 클래스로 역 직렬화

  5. 5

    루트 개체 및 1 배열 ASP.NET MVC없이 json 역 직렬화

  6. 6

    이름이없는 배열로 C # JSON 역 직렬화

  7. 7

    JSON 개체를 배열로 역 직렬화

  8. 8

    배열 또는 중첩 배열을 포함 할 수있는 JSon의 객체로 Json.net 역 직렬화

  9. 9

    C # JSON.net-비상 수 이름 개체의 유사 배열 개체 역 직렬화

  10. 10

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

  11. 11

    Collection + JSON 객체로 역 직렬화

  12. 12

    C #에서 JSON 역 직렬화 : 개체 대 배열

  13. 13

    JSON 개체를 배열로 역 직렬화

  14. 14

    C #에서 JSON 배열 역 직렬화

  15. 15

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

  16. 16

    JSON을 C # 개체로 역 직렬화

  17. 17

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

  18. 18

    JSON을 .net 객체로 역 직렬화

  19. 19

    Json .Net은 플랫 객체를 복잡한 객체로 직렬화합니다 (직렬화 / 역 직렬화에 대한 객체 구조 변경).

  20. 20

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

  21. 21

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

  22. 22

    json.net은 C #에서 json 객체를 역 직렬화합니다.

  23. 23

    json.net으로 JSON 역 직렬화

  24. 24

    VB.Net 개체로 JSON 역 직렬화

  25. 25

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

  26. 26

    C #에서 JSON 개체 역 직렬화

  27. 27

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

  28. 28

    GSON을 사용하여 객체의 JSON 배열 역 직렬화

  29. 29

    Json.Net은 JSON 객체를 역 직렬화합니다.

뜨겁다태그

보관