2014-05-17 186 views
0

可以說我有一個對象,具有這種格式:保存和恢復對象數據庫

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

我試着去同一個字符串場內此對象的記錄在我的數據庫。有沒有可能將此轉換爲JSON,因爲我在想什麼是保存和恢復的最佳方式。

+5

無論如何,你將不得不序列化你的課程。如果不是JSON,那麼XML – Uriil

回答

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是相似的。

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