【发布时间】:2012-02-03 20:06:58
【问题描述】:
我正在使用一个外部 REST API,它以逗号分隔的整数字符串形式返回一些数据。我一直在使用 Json.NET 来反序列化我进入 POCO 的数据。我在我的类中添加了一个 int[] 属性,并编写了一个自定义转换器来将逗号分隔的字符串解析为一个 int 数组。当我运行我的代码时,虽然我得到一个错误,
“Int32[] Observations 上的 JsonConverter CellControlSpeedConverter 与成员类型 Int32[] 不兼容”
这是我的成员声明:
[JsonProperty(PropertyName = "speed-list")]
[JsonConverter(typeof(CellControlSpeedConverter))]
int[] Observations { get; set; }
这是我的 JsonConverter ReadJson:(为简洁起见,省略了其他方法,请忽略过于迂腐的语法,正在尝试任何方法来使其正常工作)
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
if (reader.TokenType == JsonToken.String)
{
throw new ArgumentException(String.Format("Unexpected token parsing speed observations. Expected String, got {0}.", reader.TokenType));
}
string delimitedObservations = reader.Value.ToString().Trim();
char[] delimiter = new char[1] { ',' };
string[] observations = delimitedObservations.Split(delimiter, StringSplitOptions.RemoveEmptyEntries);
int[] output = new int[observations.Length];
for (int sequence = 1; sequence <= observations.Length; sequence++)
{
string observation = observations[sequence - 1];
int speed = 0;
if (int.TryParse(observation, out speed))
{
output[sequence - 1] = speed;
}
else
{
throw new ArgumentException(String.Format("Unexpected speed value parsing speed observations. Expected Int, got {0}", observation));
}
}
return output;
}
我已经尝试了一些其他成员类型,例如 List
【问题讨论】:
标签: json.net