2016-11-18 4 views
0

私はJSONを学んでいます。私はそれを動作させましたが、動作する理由と動作方法を知りたいです。私はなぜいくつかの行が必要で、何をするのか混乱しています。これはすべてJSONに必要なのですか?

以下は私の主なcsと私のPersonクラスです:私はJSONstringをJSON.jsonの内容と同じにしているという印象を受けています。その場合、どうして私はただWriteline JSONstringだけでなく、そこに\nを追加して別の行に追加できますか?

Console.WriteLine(p1);p1の出力は、逆シリアル化されたJSONと同じです。なぜ他のコードが必要なのか正確にはわかりません。

// Make JSONstring = to the text in JSON.json 
String JSONstring = File.ReadAllText("JSON.json"); 

JavaScriptSerializer ser = new JavaScriptSerializer(); 
Person p1 = ser.Deserialize<Person>(JSONstring); 
Console.WriteLine(p1); 
Console.ReadLine(); 

class Person 
{ 
    public string name { get; set; } 
    public int age { get; set; } 

    public override string ToString() 
    { 
     return string.Format("Name: {0} \nAge: {1}", name, age); 
    } 
} 
+5

行を分ける場所を正確に知っていますか?より現実的には、プロジェクトの目標はJSONを再フォーマットするだけでなく、実際の値を使用することです。そのためには、逆シリアル化する必要があります... –

+2

JSONの操作を練習するプロジェクトを作成しました。そのプロジェクトでは、文字列を逆シリアル化して値を出力します。デシリアライズする代わりに元の文字列を印刷するだけですか?あなたが言ったように、JSONを使って練習することはできませんでしたか?そうでなければ、それはあなたが答えることができる質問だけです。 – Servy

+1

p1はデシリアライズされたJSONではありません。 'ToString()'メソッドの返り値です。それがJSONの場合は、まあ、OKです。しかし、それはまったく何でもかまいません。 –

答えて

1
Console.WriteLine(p1) 

JSONが表示されていません。実際には、それはp1ToString()メソッド呼び出し:

return string.Format("Name: {0} \nAge: {1}", name, age); 

をコンソールに出力します。 ToString()はあなたが望むものを返すことができます。

このようなシリアライズの目的は、のオブジェクトの状態を、テキストベースの人間が判読できる形式のに保存し、その後同じ状態を持つオブジェクトを作成することです。 ToStringメソッドは、あなたに状態を表示するのに便利な方法を提供する以外に、これとはあまり関係ありません。

"state"は、例ではメンバー変数nameageの値です。

+0

ありがとう、私の例では使用するのが少なく、Jsonでより多くのin-deptを行う必要があるときにそれらを使うことができますか? –

+0

あなたが今聞いたことは分かりません。 'ToString'や 'state'のような特定の用語を使用してください。 –

+0

私は、コードの構造において、コンソールラインを出力するよりも、複雑な使い方のフレームワークが多いことを述べようとしていました。これが「過剰」であると思われる理由かもしれません。私は実際にコードを実際に動作させるのに十分複雑なものはありません。 –

関連する問題