2014-12-02 102 views
0

我解析字符串變量成JSON對象用下面的代碼:RavenDB,儲存JSON對象(C#)

string[] rInfo = r.Info.ToString().Split('|'); 
dynamic JSON_Obj = JObject.Parse(rInfo[0]); 

而且它的代碼看起來很不錯,這意味着如果我在運行時檢查對象它有正確的內容。然而,當我將它存儲在RavenDB它看起來像這樣:

{"street": { 
    "$type": "Newtonsoft.Json.Linq.JValue, Newtonsoft.Json", 
    "$values": [] 
}, 
"country": { 
    "$type": "Newtonsoft.Json.Linq.JValue, Newtonsoft.Json", 
    "$values": [] 
}} 

例如,在國內應該是這樣的「ES」或「GB」。

我存儲JSON對象作爲這樣一個文件的一部分:

   PATCHED_Doc Doc = new PATCHED_Doc() 
       { 
        Info = JSON_Obj, 
        Value = "test", 
        Id = r.Id, 
        Date = r.Date, 
       }; 

       session.Store(Doc); 
       session.SaveChanges(); 

預先感謝您的幫助。

+0

你需要調試,看看究竟是什麼JSON.NET解析你的字符串,爲什麼 – fahadash 2014-12-02 15:32:38

+0

調試它看起來像這樣:'{「street」:「Castelló」,「country」:「ES」,...}'。同樣的對象,一旦保存,看起來RavenDB像上面描述的... – Martin 2014-12-02 15:42:40

+0

@fahadash忘記解決我上面的評論給你... – Martin 2014-12-02 15:49:25

回答

0

fahadash是對的。我必須創建一個類來映射屬性。

var JSON_Obj = Newtonsoft.Json.JsonConvert.DeserializeObject<Infolist>(strJSON); 

Infolist之中:

public class Infolist 
{ 
    public string street { get; set; } 
    public string coutnry { get; set; } 
    ... 
} 

喜歡這個工作......