编辑:对代码进行了更改,使其能够正常运行服务器端。仍然得到错误:
“无法将当前JSON对象(例如{”name“:”value“})反序列化为类型'BareCupboard.Models.RecipeIngredient []',因为该类型需要JSON数组(例如[1,2,3])正确地反序列化。 要修复此错误,请将JSON更改为JSON数组(例如[1,2,3])或更改反序列化类型,使其成为普通的.NET类型(例如,不是像整数这样的基本类型,而不是类似的集合类型可以从JSON对象反序列化的数组或List。 JsonObjectAttribute也可以添加到类型中以强制它从JSON对象反序列化。 路径'消息',第1行,第11位。“
我成功地将我的服务器端代码解包,供客户端用于普通实体框架模型。然而,我为我的枚举创建了一个包装器,使服务器端交互能够以下拉列表等格式修改数据。
在取消激活后,枚举会卡在自引用循环中,它会出现。
对以这种方式创建的对象进行desearl化的正确方法是什么。
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);
}
答案 0 :(得分:1)
public int value
{
get
{
return value;
}
set
{
}
}
导致无限递归。你可以试试这个
public int value { get; set; }