C # MVC 컨트롤 Newtonsoft.json 직렬화

막심 오케 레티 안코

내가 수업이 있다고 상상 해보자

public class Foo
{
  public int Prop1 { get; set; }
  public int Prop2 { get; set; }
  public int Prop3 { get; set; }
}

그리고 일부 컨트롤러 FooController에서 이러한 클래스 Foo의 List <>를 만들고 데이터로 채우고 Newtonsoft.Json으로 직렬화하고 클라이언트로 전송한다고 상상해보십시오.

괜찮아, 문제 없어.

하지만 User1은 Prop1의 데이터를 볼 수없고 User2는 Prop3의 데이터를 볼 수 없다는 사용자 별 권한 시스템도 있습니다. 그리고 나는 그러한 Foo 클래스와 시스템의 다른 사용자에 대한 많은 권한을 가지고 있습니다. 그리고 사용자가 허용되지 않는 열의 데이터를 볼 수 없도록 json 직렬화를 중단하고 JSON 직렬화에서 허용되지 않는 사용자 열을 제외하기로 결정했습니다.

현재로서는 이미 사용자 정의 JsonConverter로 작성되어 있으므로 그렇게 할 수 있습니다. 그러나 이것은 복잡하고 (입력 클래스 스캔, 동적 접근 자 컴파일, 재귀 등) 네이티브 newtonsoft와 비슷하게 느립니다.

위의 사실과 관련하여 원하는 결과를 얻는 더 쉬운 방법이 있는지 묻고 싶습니다. 사용자 지정 JsonConverter를 만들지 않고 json 클래스로 직렬화 된 모든 열을 제거합니다.

답변 해 주셔서 감사합니다!

업데이트 @SebastianStehle의 답변을 따랐습니다. 필드를 제외하는 기능을 사용하여 클래스를 사전에 매핑하도록 내 매퍼를 확장했습니다.

하위

당신의 문제는 논리 지향적입니다. 키-값이 다르며 시나리오에 따라 클라이언트에 전송하려고합니다.

Newtonsoft.Json은 json을 직렬화합니다. 이것이 목표이며 직렬화기에 논리를 추가하지 않는 것이 좋습니다. 디버그 / 유지 관리가 더 어렵고, 하나의 객체 / 클래스가 한 가지 일을 한다는 생각을 유지하는 것이 더 어렵습니다 . 이를 단일 책임 원칙 이라고합니다 .

로직을 어떻게 / 어디에 추가합니까? 개체와 함께 명령 패턴 을 인수 로 사용하는 것이 좋습니다 . 이 "패턴"을 사용하면 매개 변수 (인수 개체의 속성)를 쉽게 추가하고 명령에 논리를 추가 할 수 있습니다. 마지막에 키-값 목록 또는 객체를 반환하고 json.net이 직렬화하도록 할 수 있습니다.

이 솔루션은 약간 복잡해 보일 수 있지만 장기적인 관점에서 확실히 유용합니다. 구현 방법에 대해 자세히 설명 할 수 있습니다.

마지막 팁 : ASP.NET WEBAPI를 사용하여 개체를 직렬화 할 수 있습니다 (훌륭한 Newtonsoft.Json의 json.net 사용).

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

mvc4의 컨트롤러에 Json 문자열을 보내고 json을 역 직렬화하는 방법

분류에서Dev

Json 배열 Newtonsoft.Json 역 직렬화

분류에서Dev

객체 목록 직렬화 / 비 직렬화를위한 JSON Newtonsoft C # 모범 사례

분류에서Dev

C #에서 Newtonsoft Json.NET을 사용하여 JSON 역 직렬화

분류에서Dev

Newtonsoft.JSON을 사용하여 C #으로 Json 문자열 역 직렬화

분류에서Dev

Newtonsoft JSON을 null로 직렬화 해제

분류에서Dev

newtonsoft로 json 배열 역 직렬화

분류에서Dev

Newtonsoft json.net 역 직렬화 NullReferenceException

분류에서Dev

Newtonsoft JSON은 템플릿 직렬화

분류에서Dev

Newtonsoft.Json으로 역 직렬화

분류에서Dev

C ++ JSON 직렬화

분류에서Dev

C # Newtonsoft.Json 최상위 수준 만 역 직렬화 하시겠습니까?

분류에서Dev

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

분류에서Dev

JSON Newtonsoft C # 다양한 유형의 객체 목록 역 직렬화

분류에서Dev

newtonsoft json 역 직렬화 오류 처리 : 부분 역 직렬화

분류에서Dev

Newtonsoft 직렬화 후 C # InvokeMethod 실패

분류에서Dev

C # Newtonsoft.json을 사용하여 단 하나의 속성 (루트를 찾을 수 없음)에 대한 Json 응답을 역 직렬화합니다.

분류에서Dev

MVC C #에서 직렬화 할 때 잘못된 JSON

분류에서Dev

Newtonsoft.Json을 사용하여 C #에서 중첩 배열로 json을 역 직렬화하는 방법

분류에서Dev

ASP.NET MVC 5 컨트롤러에서 JSON에서 추상 매개 변수로 역 직렬화하는 방법

분류에서Dev

JSON C # 역 직렬화

분류에서Dev

c # Json 역 직렬화 식

분류에서Dev

C # : JSON 역 직렬화

분류에서Dev

C #-SNS 용 JSON 직렬화

분류에서Dev

JSON C # 역 직렬화

분류에서Dev

JSON C # 역 직렬화

분류에서Dev

C #에서 Newtonsoft를 사용하여 Json에서 중첩 된 개체의 효율적인 수동 역 직렬화

분류에서Dev

C # Newtonsoft를 사용하여 JSON 파일을 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

Python에서 C # Newtonsoft와 같은 클래스로 Json을 역 직렬화 할 수 있습니까?

Related 관련 기사

  1. 1

    mvc4의 컨트롤러에 Json 문자열을 보내고 json을 역 직렬화하는 방법

  2. 2

    Json 배열 Newtonsoft.Json 역 직렬화

  3. 3

    객체 목록 직렬화 / 비 직렬화를위한 JSON Newtonsoft C # 모범 사례

  4. 4

    C #에서 Newtonsoft Json.NET을 사용하여 JSON 역 직렬화

  5. 5

    Newtonsoft.JSON을 사용하여 C #으로 Json 문자열 역 직렬화

  6. 6

    Newtonsoft JSON을 null로 직렬화 해제

  7. 7

    newtonsoft로 json 배열 역 직렬화

  8. 8

    Newtonsoft json.net 역 직렬화 NullReferenceException

  9. 9

    Newtonsoft JSON은 템플릿 직렬화

  10. 10

    Newtonsoft.Json으로 역 직렬화

  11. 11

    C ++ JSON 직렬화

  12. 12

    C # Newtonsoft.Json 최상위 수준 만 역 직렬화 하시겠습니까?

  13. 13

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

  14. 14

    JSON Newtonsoft C # 다양한 유형의 객체 목록 역 직렬화

  15. 15

    newtonsoft json 역 직렬화 오류 처리 : 부분 역 직렬화

  16. 16

    Newtonsoft 직렬화 후 C # InvokeMethod 실패

  17. 17

    C # Newtonsoft.json을 사용하여 단 하나의 속성 (루트를 찾을 수 없음)에 대한 Json 응답을 역 직렬화합니다.

  18. 18

    MVC C #에서 직렬화 할 때 잘못된 JSON

  19. 19

    Newtonsoft.Json을 사용하여 C #에서 중첩 배열로 json을 역 직렬화하는 방법

  20. 20

    ASP.NET MVC 5 컨트롤러에서 JSON에서 추상 매개 변수로 역 직렬화하는 방법

  21. 21

    JSON C # 역 직렬화

  22. 22

    c # Json 역 직렬화 식

  23. 23

    C # : JSON 역 직렬화

  24. 24

    C #-SNS 용 JSON 직렬화

  25. 25

    JSON C # 역 직렬화

  26. 26

    JSON C # 역 직렬화

  27. 27

    C #에서 Newtonsoft를 사용하여 Json에서 중첩 된 개체의 효율적인 수동 역 직렬화

  28. 28

    C # Newtonsoft를 사용하여 JSON 파일을 역 직렬화하는 방법은 무엇입니까?

  29. 29

    Python에서 C # Newtonsoft와 같은 클래스로 Json을 역 직렬화 할 수 있습니까?

뜨겁다태그

보관