2016-10-09 72 views
0

我有下面的代碼將一個數據錶轉換成JSON字符串,我從我的WCF服務得到的JSON看起來像這樣;如何在我的JSON響應中轉義雙引號?

[{"id":"7c6c2d6b-416c-4535-95ba-b49a9f0c008b","title":"hello","description":"world","complete":true,"DependsOnTask":"63d47a78-ba4d-4740-9f61-9247dd9d5e82","id1":"63d47a78-ba4d-4740-9f61-9247dd9d5e82","title1":"another","description1":"example","complete1":false,"DependsOnTask1":null}] 

和轉換代碼看起來像這樣;

string json = JsonConvert.SerializeObject(dt,Formatting.Indented); 
         string cleanjson = json.Replace("\"", ""); 
         return json; 

的問題是,我不能正確deserialise JSON的客戶端recieving即響應,因爲JSON中有額外的雙引號,並且我一直無法使用到與string.replace刪除它們。

有沒有另一種方法來做到這一點?

感謝提前:)

******* UPDATE *********

這是我使用的客戶端上的代碼

private void LoadTasks() 
     { 
      // get the todo list items 
      ToDoService.ToDoServiceClient client = new ToDoService.ToDoServiceClient(); 

      try 
      { 
       //List<ToDoService.ToDoItemContract> toDoItems = client.GetToDoItems("").ToList(); 
       //List<string> ItemsWithDependantTasks = new List<string>(); 

       var Items= client.GetAllDependantTasks(); 
       List<string> list = JsonConvert.DeserializeObject<List<string>>(Items); 



       dlTasks.DataSource = list; 


       dlTasks.DataBind(); 

       client.Close(); 
      } 
      catch (Exception ex) 
      { 
       // TODO: Log error 
       client.Abort(); 
      } 
     } 
+0

您的json字符串是OK ... –

+0

什麼似乎是一個數據數組顯示爲重複編號的屬性。你爲什麼這樣做?這2條記錄? – user3185569

+0

順便說一句,'「\」'由visual studio和調試器顯示,它實際上不是數據的一部分,所以您不需要替換它。 – user3185569

回答

1

沒有額外的引號,JSON數據是有效的(例如,您可以通過將JSON數據粘貼到https://jsonformatter.curiousconcept.com/來驗證自己)。

但是,您如何期望JSON.NET將其反序列化爲純字符串列表?這需要反序列化到一些字典,JObject或具有匹配屬性的實體。

+0

,所以不是將它反序列化爲一個普通字符串列表,而是將它反序列化爲字典? –

+0

@ReeceCottam這真的取決於你將要用數據做什麼。關鍵是你的JSON數據包含一個帶有屬性的對象數組,而不是普通的字符串,所以試圖反序列化爲一個字符串是沒有意義的,必須失敗。 – Lucero