私はこのようないくつかのjsonデータを持っています:
{
'vehicles':{
...
},
'arenaUniqueID':214197923159382012L,
'common':{
...
},
'players':{
...
},
'personal':{
...
}
}
このデータを逆シリアル化するためのクラス
public class UnPickledData
{
public Dictionary<int, Vehicle> vehicles { get; set; }
public long arenaUniqueID { get; set; }
public Common common { get; set; }
public Dictionary<int, Player> players { get; set; }
public Personal personal { get; set; }
}
逆シリアル化プログラム中に例外がスローされます:
値を解析した後、予期しない文字が検出されました: L. Path arenaUniqueID', line 1, position 51810.
そのプロパティ用に独自のカスタム JSONConverter を作成しようとしました: クラスが変更されました:
public class UnPickledData
{
public Dictionary<int, Vehicle> vehicles { get; set; }
[JsonConverter(typeof(CustomLongConverter))]
public Int64 arenaUniqueID { get; set; }
public Common common { get; set; }
public Dictionary<int, Player> players { get; set; }
public Personal personal { get; set; }
}
コンバーターコード:
class CustomLongConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return objectType == typeof(long);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
return Int64.Parse(reader.Value.ToString());
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotSupportedException();
}
}
ただし、この例外は引き続き発生します。
私が間違っていることと、これを修正する方法は?
ps Newtonsoft.JSON v5.0.5.16108/.Net FW 3.5/VS 2010 を使用