2014-12-02 114 views
0

好日子,在RavenDB文档更新场

我有一个RavenDB JSON文件,其中一个字段(“信息”)包含一个字符串,看起来像这样:

"{\"value1\":\"9\", \"value2\": \"dog\", ....}" 

我想删除逃脱"\"字符,因此它将被RavenDB识别为JSON列表。

不过,我试图与

newString = oldString.Replace("\\", "")更新文件,

newString = oldString.Replace(@"\", "")

newString = oldString.Trim(new Char[] { @"\" })

,但它不工作。应用上述这些方法后,字符串看起来没有改变。

请参阅完整的代码如下:

  while(true) 
      { 
       var result = session.Query<Documents>() 
        .Take(1000).Skip(i) 
        .ToList(); 
       if (result.Count == 0) 
        break; 

       foreach (var r in result) 
       { 
        string rInfo = r.Info.ToString(); 
        rInfo = rInfo.Replace("\\", ""); 

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

        session.Store(r_Doc); 
        session.SaveChanges(); 

       } 

       session.SaveChanges(); 

       i += result.Count; 
      } 



public class PATCHED_Doc 
{ 
    public string Info { get; set; } 
    public string Value { get; set; } 
    public int Id { get; set; } 
    public string Date { get; set; } 
} 

预先感谢您的帮助。

+0

请发布完整的代码。你有没有注意到你不能在.NET中更改字符串?它们是不可改变的。你需要创建一个新的。你调用的方法正是这样做的,你可能没有正确使用返回值。 – nvoigt 2014-12-02 12:15:37

+0

@nvoigt编辑我的问题。希望更清楚。 – Martin 2014-12-02 12:28:57

回答

1

您需要将JSON解析为一个对象,然后将其交给Raven DB。字符串被视为字符串。使用JSON.NET库到parse it into Anonymous objects。将您的Info属性更改为对象类型。然后将匿名对象分配给Info属性。

+0

谢谢。使用Newtonsoft.Json.Linq来解析字符串。然而,Json对象似乎并未在RavenDB中正确保存。请参阅[this](http://stackoverflow.com/questions/27253014/ravendb-storing-json-object-c) – Martin 2014-12-02 15:30:38