2016-11-07 31 views
2

Windows Phone 8用のSilverlightプロジェクトに、GeoCoordinateと短い値のタプルリストを作成しました。 そうするために、私はTupleListクラスを作成しました:Jsonはタプルでデシリアライズする問題

public class TupleList<T1, T2> : List<Tuple<T1, T2>> 
{ 
    public void Add(T1 item, T2 item2) 
    { 
     Add(new Tuple<T1, T2>(item, item2)); 
    } 
} 

をので、私はこのように私のタプルを作成することができています:

new Tuple<GeoCoordinate, short> TupleName; 

次のステップでは、私はTXT/JSONファイル内で書きたいです

string Json = JsonConvert.SerializeObject(TupleName); 
... 
System.Text.Encoding.UTF8.GetBytes(Json.ToCharArray()); 

が、今私の問題は、再びこのファイルをロードし、再びそれをデシリアライズすることであり、私は解決策を探しています:これは罰金も動作します

string TestString = streamReader.ReadLine(); 
Tuple<GeoCoordinate, short> TestTuple; 
TestTuple = JsonConvert.DeserializeObject<Tuple<GeoCoordinate, short>>(TestString); 
ListBox_WayPoints.Items.Add(TestTuple); 

ReadLine()までは期待と同じように働いていると私は"Item1: 'GeoCoordinate stuff', Item2: 'short value'"のような文字列を取得しかしJsonConvert.DeserializeObject<Tuple<GeoCoordinate, short>>メソッドは常にクラッシュされ、デバッガがちょうどデバッガのブレークポイントと全体のエラーにジャンプされているので、なぜ私は知りませんメッセージは次のとおりです。

Ausnahme ausgelöst: "Newtonsoft.Json.JsonSerializationException" in Newtonsoft.Json.DLL 
Ausnahme ausgelöst: "Newtonsoft.Json.JsonSerializationException" in mscorlib.ni.dll 

だから私は正しく文字列をデシリアライズすることが可能であるか(残念ながら私はまだ成功していない)、この問題での例/ヘルプは、今探しています。

+0

を置きます'JsonConvert.DeserializeObject'を呼び出すコードのブロックをtry/catchしてください。あなたの質問で引用したブロックの4行全体に置きます。 'catch'にブレークポイントを置き、例外の' Message'プロパティが何であるかを見てください。それがエラーメッセージです。何が間違っているのかを理解するのに役立ちます。 –

答えて

2

は、[OK]を2時間後に私は答えた:Dを

全体の問題は、全体魔法があるので、私はタプルを期待しかし、私が得たことはすでにTupleListだったということです。

string TestString = streamReader.ReadLine(); 
NewRoute = JsonConvert.DeserializeObject<TupleList<GeoCoordinate, short>>(TestString); 
関連する問題