假设我有一个这种格式的对象:
public class ObjectClassSample
{
public string product { set; get; }
public string Description { set; get; }
public int Price { set; get; }
}
我试图在我的数据库中的记录中的字符串字段内同样使用此对象。是不是可以将其转换为JSON,因为我在想什么是保存和恢复它的最佳方法。
答案 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是相似的。
正如你所看到的......更漂亮。