トライアルで 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;
}
運がなければ。
提案?