如何在c#中将对象保存为字符串

时间:2015-02-06 06:52:27

标签: c# string object

我有一个学生的对象

Class Student
{
  public Student()
  {
     name = "xyz";
     roll = 20;
     age = 16;
  }
  string name;
  int roll;
  int age;
}

Class Service
{
  Student student = new Student();
  string s = ???
 // what I have to do for getting string like {"name" : "xyz", "roll" : 20, "age" :16}
}

我需要来自上述对象的字符串。

如果我序列化对象,我会得到一些包含转义序列的东西。

任何帮助都会非常明显。

6 个答案:

答案 0 :(得分:7)

您真正想要的是将对象序列化为JSON

这可以通过JSON.NET库轻松完成,如下所示:

Student student = new Student();
var s = JsonConvert.Serialize(student);

如果您需要在多个地方使用此功能,则可以创建扩展方法或覆盖ToString类的Student方法:

public class Student
{
     public override string ToString()
     {
          return JsonConvert.Serialize(this);
     }
}

答案 1 :(得分:4)

您必须序列化您的对象。例如,使用JavaScriptSerializer:

string s = new JavaScriptSerializer().Serialize(student);

不要忘记使用

添加以下内容
using System.Web.Script.Serialization;

答案 2 :(得分:3)

  

这是一个简化的例子,使用 Vsevolod Goloviznin 回答。它更好。

只需使用toString();

string s = stuident.toString();

在类中添加toString()的重载以获得漂亮的打印效果。我个人的偏好是输出JSON。

Class Student
{
  public Student()
  {
     name = "xyz";
     roll = 20;
     age = 16;
  }


  public override string toString(){
     return "{name: " + name + ", roll: " + roll + ", age: " + age + "}";
  }

  string name;
  int roll;
  int age;
}

答案 3 :(得分:2)

覆盖Student类的ToString()方法

类似

public override string ToString()
{
    return string.Format("Name: {0}, Roll: {1}, Age: {2}", name, roll, age);
}

答案 4 :(得分:1)

示例中的字符串是JSON。你可以使用http://www.newtonsoft.com/jsont 序列化:     string s = JsonConvert.SerializeObject(student);

答案 5 :(得分:1)

您似乎想要将其序列化为JSON,请查看http://www.newtonsoft.com/json并使用它来调用string s = JsonConvert.SerializeObject(student);