我在试验中使用 JSON.Net 来序列化/反序列化格式不太好的 JSON。
具体来说,我正在尝试使用 js 变量作为值来序列化属性,如下所示:
{ ..., mapTypeId: google.maps.MapTypeId.ROADMAP, ... }
我的 c# 课程是
public enum MapTypeId
{
HYBRID, ROADMAP, SATELLITE, TERRAIN
}
[JsonObject]
public class MapOptions
{
...
[JsonProperty]
[JsonConverter(typeof(MapTypeConverter))]
public MapTypeId mapTypeId { get; set; }
...
}
通过自定义JsonConverter
,我已经能够控制序列化:
public class MapTypeConverter : JsonConverter
{
...
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
writer.WriteRawValue("google.maps.MapTypeId." + ((MapTypeId)value).ToString());
}
...
}
并且序列化有效。但是当我试图反序列化字符串时:
JsonConvert.DeserializeObject<MapOptions>(ser);
我得到错误:Unexpected character encountered while parsing value: g. Path 'mapTypeId', line 1, position 169.
在我的 MapTypeConverter 中,我还尝试覆盖 ReadJson 方法:
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
// no parse by now, just a try
return MapTypeId.TERRAIN;
}
没有运气。
建议?