2016-11-18 38 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,那好吧。但它可能是任何東西。 –

回答

1
Console.WriteLine(p1) 

沒有顯示JSON。實際上,它調用ToString()方法上p1

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

並將結果到控制檯輸出。 ToString()可以返回任何你想要的。

至於你的原始問題,這樣的序列化的目的是爲了將對象的狀態保存爲基於文本的,人類可讀的形式,然後創建具有相同狀態的對象。該方法與此無關,除了爲您提供查看狀態的便捷方式之外。

「狀態」是成員變量nameage的值,在您的示例中。

+0

謝謝,所以在我的例子中使用它更少,更多的是當我真的需要使用Json做更多的事情時能夠使用它們? –

+0

我不明白你剛剛問了什麼。使用特定的術語,如「ToString」或「狀態」。 –

+0

我試圖說明,在代碼的結構中,很多是比簡單輸出控制檯線更復雜的使用框架。這可能是我覺得「超額」的原因。我只是沒有足夠的複雜程度來讓代碼正常工作。 –

相關問題