2016-11-18 41 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

我试图说明,在代码的结构中,很多是比简单输出控制台线更复杂的使用框架。这可能是我觉得“超额”的原因。我只是没有足够的复杂程度来让代码正常工作。 –

相关问题