2016-07-26 30 views
0

我與在後端和C#的客戶端PHP工作。 所以,當我在JSON接收來自服務器的多行消息我這樣做:JSON誤差 r n在C#中的字符串

dynamic answer = JsonConvert.DeserializeObject(resultHttpPost); 
string body = answer.body; 

但我發現了一個錯誤:

Symbol of new line is in constant

正因爲如此,我不能使用多線消息。

我試過這樣,它不工作,要麼

resultHttpPost = resultHttpPost.Replace("\\n", "\n").Replace("\\r", "\r").Replace("\\t", "\t"); 
    project.Variables["var_dump"].Value = resultHttpPost; 
dynamic answer = JsonConvert.DeserializeObject(resultHttpPost); 

所以我怎麼做工作?

爲JSON

例子:

{"status":"response_ok","message":{"body":"Hi test,\r\n\r\ntesting it, lorem ipsum lorem ipsumlorem ipsumlorem ipsumlorem ipsum.\r\n\r\nSignature","id":1015,"id_thread":741},"id_thread":741} 
+0

顯示「resultHttpPost」的值。 – BWA

+0

{ 「狀態」: 「response_ok」, 「消息」:{ 「本體」: 「HI試驗,\ r \ n \ r \ ntesting它,Lorem存有LOREM ipsumlorem ipsumlorem ipsumlorem ipsum的\ r \ n \ r \ n簽名」 ,「id」:1015,「id_thread」:741},「id_thread」:741} – Nelex

+0

@Nelex你爲什麼試圖替換換行符*? C#,Json.NET和Json本身可以很好地處理換行符。你發佈的代碼也沒有多大意義 - 你在哪裏找到'\\ r'?你可能會被調試器對換行符的表示困惑嗎?你有沒有嘗試反序列化原始字符串? –

回答

1

示例代碼:

using System; 
using System.Collections.Generic; 
using Newtonsoft.Json; 

public class Message 
{ 
    public string body { get; set; } 
    public int id { get; set; } 
    public int id_thread { get; set; } 
} 

public class RootObject 
{ 
    public string status { get; set; } 
    public Message message { get; set; } 
    public int id_thread { get; set; } 
} 

public class Program 
{ 
    static public void Main() 
    { 
     string j = "{\"status\":\"response_ok\",\"message\":{\"body\":\"Hi test,\r\n\r\ntesting it, lorem ipsum lorem ipsumlorem ipsumlorem ipsumlorem ipsum.\r\n\r\nSignature\",\"id\":1015,\"id_thread\":741},\"id_thread\":741} "; 

     RootObject ro = JsonConvert.DeserializeObject<RootObject>(j); 

     Console.WriteLine(ro.message.body); 
    } 

} 

結果:

Hi test,

testing it, lorem ipsum lorem ipsumlorem ipsumlorem ipsumlorem ipsum.

Signature

是的exaple JSON問題JSON?

+0

換句話說,你不能重現該問題? –

+0

@PanagiotisKanavos是的,這個字符串應該反序列化沒有問題。 – BWA

+0

最有可能的OP混淆實際字符轉義換行,並試圖取代什麼是不存在 –

1

我注意到你正在使用這個與ASP.NET。

這很可能是因爲你實際上是其序列兩次。在我的情況下,我調用Json.NET的序列化方法,然後從Web API控制器返回結果字符串,並且它本身是序列化JSON字符串(ASP.NET Web API內部使用Json.NET)並將JSON序列化爲JSON導致\r\n無處不在。

+0

不,我100%肯定它的系列化只有一次,我只是檢查一遍。 – Nelex

相關問題