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);
}
응답을 높이 평가하지만, 약간의 변경이있었습니다. 감사. – GenericController
@GenericController 그것은 당신이 객체 (배열이 아닌)를 직렬화하는 것처럼 보이지만 그것을 배열 ('Recipe []')로 역 직렬화하려고 시도하는 것 같습니다. 직렬화 코드 없이는 아무 것도 말하기가 어렵습니다. –
웹 API에서 Get 코드를 사용하여 응답 데이터 형식을 지정 하시겠습니까? – GenericController