将对象保存并还原到数据库

时间:2014-05-17 09:21:27

标签: asp.net asp.net-mvc

假设我有一个这种格式的对象:

   public class ObjectClassSample
    {
        public string product { set; get; }
        public string Description { set; get; }
        public int Price { set; get; } 
    }

我试图在我的数据库中的记录中的字符串字段内同样使用此对象。是不是可以将其转换为JSON,因为我在想什么是保存和恢复它的最佳方法。

1 个答案:

答案 0 :(得分:1)

您必须将该对象转换为字符串,我不确定为什么您不想使用JSON,但要在不转换为JSON的情况下执行此操作,您可以使自己的容易出错格式。

这是一个将对象转换为字符串的示例,用逗号分隔每个属性。

一些推广方法

public static class ObjectSampleExtensions
{
    public static ObjectClassSample ToObjectClassSample(this string s)
    {
        var parts = s.Split(new [] { ','});
        return new ObjectClassSample 
        {
              product = parts[0],
              Description = parts[1],
              Price = int.Parse(parts[2])
        };
    }

    public static string ConvertToString(this ObjectClassSample objectToConvertToString)
    {
        const string delimiter = ",";
        var sb = new StringBuilder();
        sb.Append(objectToConvertToString.product);
        sb.Append(delimiter);
        sb.Append(objectToConvertToString.Description);
        sb.Append(delimiter);
        sb.Append(objectToConvertToString.Price);

        return sb.ToString();
    }
}

然后用法

void Main()
{
    var obj = new ObjectClassSample 
    {
        Description = "this is the description",
        Price = 3,
        product = "my product"
    };

    var s = obj.ConvertToString();

    //you can now save s to the database
    Db.Save(s);

    //later on pretend you read 's' back from the database
    s = Db.ReadAnItem();
    var objectFromDb = s.ToObjectClassSample();
}

所以是的,你可以随意序列化数据,但我会使用一种通用格式:json,xml,csv,等等。

我不建议使用上面的代码,这只是一个示例,表明您基本上可以做任何想要将其转换为字符串的内容,只要您可以将其转换回来。使用json解析器会更容易。

ServiceStack.Text的示例如下所示

var objToSerialize = new ObjectClassSample(); //fill this with data
string myObjectAsString = objToSerialize.ToJson();

//reading it back from the database

ObjectClassSample myObj = myObjectAsString.FromJson<ObjectClassSample>();

我确定newstonsoft.json是相似的。

正如你所看到的......更漂亮。