ASP.NET Web API 직렬화 된 JSON 오류 : "자체 참조 루프"

자유형 076

이것과 오랫동안 투쟁했습니다. 저는 ASP.NET 웹 API를 사용하여 데이터베이스와의 깔끔하고 쉬운 HTTP / JSON 상호 작용을 제공하고 있습니다. 다음과 같은 엔티티 이름 예약이 있습니다.

    // Reservation
public class Reservation
{
    public int ID { get; set; } // ID (Primary key)
    public int EquipmentID { get; set; } // EquipmentID
    public string Username { get; set; } // Username
    public DateTime BeginDateTime { get; set; } // BeginDateTime
    public int? Duration { get; set; } // Duration
    public int? ReservationStateID { get; set; } // ReservationStateID
    public DateTime? CheckInDateTime { get; set; } // CheckInDateTime
    public string Note { get; set; } // Note

    // Foreign keys
    public virtual Equipment Equipment { get; set; } // FK_Reservation_EquipmentID
    public virtual ReservationState ReservationState { get; set; } //FK_Reservation_ReservationState
}

여태까지는 그런대로 잘됐다. http 요청과 함께 Reservation JSON 개체를 전달하는 간단한 Python 스크립트를 실행하여 새 예약을 만듭니다. 전생에는 데이터 유효성 검사없이 코드를 추가하는 예약을 실행하고 HttpActionResult에 Reservation 개체를 반환했습니다. 내가 그 대가로 본 것은 멋진 json 객체였습니다.

{u'Username ': u'name', u'ReservationStateID ': 1, u'Equipment': 없음, u'EquipmentID ': 2, u'BeginDateTime': u'2014-05-31T14 : 00 : 00Z ', u'Note ': u' ', u'CheckInDateTime': 없음, u'Duration ': 10800, u'ReservationState': 없음, u'ID ': 51}

나는 외래 키 Equipment 및 ReservationState가 반환 된 객체에 포함되어 더 큰 문제에 도움이 될 수 있지만 적시에 해당 키에 대해 약간 걱정합니다. 이제 예약에서 참조하는 장비 항목을 수집하여 데이터 유효성 검사를 실행하려고합니다 .

Equipment equipmentItem = await db.Equipment.FindAsync(newRes.EquipmentID);

이제 동일한 Python 스크립트에서 동일한 데이터를 사용하여 동일한 작업을 수행하려고 할 때 수신 된 결과는 큰 무서운 오류입니다.

" 'ObjectContent`1'유형이 'application / json; charset = utf-8'컨텐츠 유형에 대한 응답 본문을 직렬화하지 못했습니다.", u'StackTrace ': 없음, u'Message': u '오류가 발생했습니다. ', u'InnerException': {u'ExceptionMessage ': u "'Equipment '속성에 대해 자체 참조 루프가 감지되었습니다.

내 데이터베이스에있는 외래 키가 순환 참조를 생성하지 않는다고 99 % 긍정적이지만 아쉽습니다. 다시 "성공적인"json 결과에 외래 키가 포함 되어 있음을 지적하고 싶습니다 . 내가 제거 할 수 있다면 자기 참조 문제를 제거 할 수있을 것입니다. 도와 주셔서 감사합니다!

자유형 076

이 오류는 외래 키 개체에 대한 프록시를 만드는 EF로 인해 발생했으며, 프록시로 직렬화 할 때 기본 serializer (DataContractSerializer) 오류가 발생했습니다. 해결 방법은 Global.asax.cs 파일에 다음 줄을 추가하는 것입니다.

GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore; 

@SKall의 답변으로 문제가 해결되었지만 IgnoreDataMember 속성을 부여한 속성에 대해서만 프로젝트 전체에서 해결되지 않았습니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Unity Json.net bson 자체 참조 루프

분류에서Dev

ASP.NET Web API-JSON을 역 직렬화하는 방법

분류에서Dev

EF WebAPI 자체 참조 루프

분류에서Dev

ASP.net 웹 API의 단순 유형 JSON 직렬화

분류에서Dev

Web API가 직렬화 된 객체의 json을받지 못함

분류에서Dev

ASP.NET 웹 API의 xml 직렬화

분류에서Dev

asp.net webapi POST에서 직렬화 또는 직렬화 해제 중 오류

분류에서Dev

Web API에서 JSON 역 직렬화

분류에서Dev

asp.net 웹 API에서 json으로의 HL7 FHIR 직렬화

분류에서Dev

JSON을 개체로 역 직렬화 할 때 발생하는 .NET Web API 문제

분류에서Dev

ASP.NET 모델을 Html.Raw를 사용하여 JSON으로 직렬화하는 Razor 구문 오류

분류에서Dev

AngularJS에서 게시 된 데이터를 역 직렬화 할 때 JSON.Net 오류

분류에서Dev

ASP.Net Web API의 SQL 테이블에서 중첩 된 JSON 개체를 가져 오는 방법

분류에서Dev

JSON 역 직렬화 된 HTTP 응답 개체에 대한 ASP.NET 전달 변수

분류에서Dev

Web API 및 JSON.NET을 사용하여 객체를 직렬화 할 때 $ id / $ ref 방지

분류에서Dev

ASP.NET Web API REST 서비스 : HTTP 오류 405

분류에서Dev

ASP.NET Core Web API 500 내부 서버 오류

분류에서Dev

JSON.NET으로 중첩 된 JSON 응답 역 직렬화

분류에서Dev

How to get JSON Using ASP.net Web API?

분류에서Dev

ASP.NET Web API에 JSON HttpContent 게시

분류에서Dev

ASP .NET Web API 반환 JSON 파일

분류에서Dev

ASP.NET Core 3.0 JSON 직렬화 문제

분류에서Dev

VB로 ASP.NET에서 JSON 직렬화

분류에서Dev

JSON.NET URL에서 중첩 된 데이터 역 직렬화

분류에서Dev

JSON.Net 역 직렬화로 누락 된 속성 채우기

분류에서Dev

Web Json 역 직렬화

분류에서Dev

Jupyter에서 Bokeh 가져 오기 json_item 직렬화 된 JSON

분류에서Dev

Json .Net 역 직렬화

분류에서Dev

Json String .net 역 직렬화

Related 관련 기사

  1. 1

    Unity Json.net bson 자체 참조 루프

  2. 2

    ASP.NET Web API-JSON을 역 직렬화하는 방법

  3. 3

    EF WebAPI 자체 참조 루프

  4. 4

    ASP.net 웹 API의 단순 유형 JSON 직렬화

  5. 5

    Web API가 직렬화 된 객체의 json을받지 못함

  6. 6

    ASP.NET 웹 API의 xml 직렬화

  7. 7

    asp.net webapi POST에서 직렬화 또는 직렬화 해제 중 오류

  8. 8

    Web API에서 JSON 역 직렬화

  9. 9

    asp.net 웹 API에서 json으로의 HL7 FHIR 직렬화

  10. 10

    JSON을 개체로 역 직렬화 할 때 발생하는 .NET Web API 문제

  11. 11

    ASP.NET 모델을 Html.Raw를 사용하여 JSON으로 직렬화하는 Razor 구문 오류

  12. 12

    AngularJS에서 게시 된 데이터를 역 직렬화 할 때 JSON.Net 오류

  13. 13

    ASP.Net Web API의 SQL 테이블에서 중첩 된 JSON 개체를 가져 오는 방법

  14. 14

    JSON 역 직렬화 된 HTTP 응답 개체에 대한 ASP.NET 전달 변수

  15. 15

    Web API 및 JSON.NET을 사용하여 객체를 직렬화 할 때 $ id / $ ref 방지

  16. 16

    ASP.NET Web API REST 서비스 : HTTP 오류 405

  17. 17

    ASP.NET Core Web API 500 내부 서버 오류

  18. 18

    JSON.NET으로 중첩 된 JSON 응답 역 직렬화

  19. 19

    How to get JSON Using ASP.net Web API?

  20. 20

    ASP.NET Web API에 JSON HttpContent 게시

  21. 21

    ASP .NET Web API 반환 JSON 파일

  22. 22

    ASP.NET Core 3.0 JSON 직렬화 문제

  23. 23

    VB로 ASP.NET에서 JSON 직렬화

  24. 24

    JSON.NET URL에서 중첩 된 데이터 역 직렬화

  25. 25

    JSON.Net 역 직렬화로 누락 된 속성 채우기

  26. 26

    Web Json 역 직렬화

  27. 27

    Jupyter에서 Bokeh 가져 오기 json_item 직렬화 된 JSON

  28. 28

    Json .Net 역 직렬화

  29. 29

    Json String .net 역 직렬화

뜨겁다태그

보관