2012-11-26 4 views
0

EDIT : 올바르게 서버 측에서 작동하도록 코드를 변경했습니다. 오류가 계속 발생합니다 :enum 래퍼를 역 직렬화

"JSON 배열이 필요하기 때문에 현재 JSON 객체 (예 : {"name ":"value "})를 'BareCupboard.Models.RecipeIngredient []'유형으로 deserialize 할 수 없습니다 (예 : [1 , 2,3]) 올바르게 역 직렬화 이 오류를 수정하려면 JSON 배열을 JSON 배열 (예 : [1,2,3])로 변경하거나 deserialized 형식을 일반 .NET 유형 (예 : JSON 객체에서 역 직렬화 할 수있는 정수와 같은 컬렉션 유형이 아닌 정수와 같은 기본 유형) JSON 객체에서 deserialize하도록 JsonObjectAttribute를 유형에 추가 할 수도 있습니다. 경로 'Message', line 1, 위치 11 "

일반 엔티티 프레임 워크 모델에서 클라이언트가 사용하기 위해 내 서버 측 코드를 성공적으로 탈 산화했습니다. 그러나 서버 쪽 상호 작용을 사용하여 드롭 다운 목록 등의 형식으로 데이터를 수정할 수있는 열거 형 래퍼를 만들었습니다.

열거 형 열거 형은 자체 참조 루프에서 멈추는 것으로 나타납니다.

그런 방법으로 생성 된 개체를 껍질을 벗기는 올바른 방법은 무엇입니까?

는 클라이언트 측에서와 같은 deseralized 소비
public enum ingredientType 
{ 
    grams = 1, 
    kilograms = 2, 
    millileters = 3, 
    liters = 4, 
    pinch = 5, 
    teaspoon = 6, 
    tablespoon = 7, 
    whole = 8, 
    Cup = 9 
} 

public class ingredientWrapper 
{ 
    private ingredientType _t; 
    public int value 
    { 
     get 
     { 
      return (int)_t; 
     } 
     set 
     { 
      _t = (ingredientType)value; 
     } 
    } 
    public ingredientType EnumValue 
    { 
     get 
     { 
      return _t; 
     } 
     set 
     { 
      _t = value; 
     } 
    } 

    public static implicit operator ingredientWrapper(ingredientType i) 
    { 
     return new ingredientWrapper { EnumValue = i }; 
    } 

    public static implicit operator ingredientType(ingredientWrapper iw) 
    { 
     return iw.EnumValue; 
    } 

:

public async Task<IEnumerable<Recipe>> GetAll() 
    { 
     HttpResponseMessage response = await _Recipeclient.GetAsync(RecipeServiceUrl); 
     var jsonString = await response.Content.ReadAsStringAsync(); 
     return JsonConvert.DeserializeObject<Recipe[]>(jsonString); 
    } 

답변

1
public int value 
{ 
    get 
    { 
     return value; 
    } 
    set 
    { 
    } 
} 

무한 순환시킨다. 이것을 시도해 볼 수 있습니다

public int value { get; set; } 
+0

응답을 높이 평가하지만, 약간의 변경이있었습니다. 감사. – GenericController

+0

@GenericController 그것은 당신이 객체 (배열이 아닌)를 직렬화하는 것처럼 보이지만 그것을 배열 ('Recipe []')로 역 직렬화하려고 시도하는 것 같습니다. 직렬화 코드 없이는 아무 것도 말하기가 어렵습니다. –

+0

웹 API에서 Get 코드를 사용하여 응답 데이터 형식을 지정 하시겠습니까? – GenericController