2015-10-18 20 views
0

我有一個ASP.NET Web API REST服務運行在一個服務器上,它將數據反饋給我的Android應用程序。我使用了很多Newtonsoft Json,並取得了巨大的成功,但是這使我在寫一個新的方法時遇到了問題。Json.NET serializeObject將換行符轉換爲數據

簡而言之,我正在從SQL Server數據庫中讀取一個較大的字符串,並將其放入一個簡單的對象中,以Json字符串將其序列化併發布HTTP POST響應。現在發生的事情是,serializeObject將每76個字符插入換行符(/ n)到字符串中。

下面的代碼...

Logger.log("retPair.publicKey = " + retPair.publicKey); 
    returnString = JsonConvert.SerializeObject(retPair); 
    Logger.log("Verify Talker return is " + returnString); 

主要生產以下兩個日誌條目。 。 。

2015年10月18日3點19分36秒PMDBAWP7 retPair.publicKey = MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzQn5Lw2PTlVkSOjg7ycZMVDUmaGYQhVe I82XcheaPDyr16tCp4P2oJCjKlKPeN1v5qN4kR4BKo3xjUwM + BWO6i3mr10C9/mbXUoInVXVODRu lkdIXFPthSkBMytl5jAjaf1Ep4F3Y64WVwYXd9ASYpfNN5FMvxUzYbdkV7QNObsfHkAnr98uamFg SJ0dGJ8svQ1DKiKz4db + zkzalXNHqh7mbV7kxRkT08GlocFEOp/xaLISlrH03CcKozerTbY/NkMx XE7s7 + wAuREgjKdNkpjRYUTMdm/QhxcvJf8UU7tE89POHkZ1wghPpAFIJ6kdCVBewrfaJVdcwJk8 WdzzaQIDAQAB

10/18/2015 3:19:36 PMDBAWP7驗證發言者回覆是 { 「phoneKey」: 「cathyblakely」, 「公鑰」: 「MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzQn5Lw2PTlVkSOjg7ycZMVDUmaGYQhVe \ nI82XcheaPDyr16tCp4P2oJCjKlKPeN1v5qN4kR4BKo3xjUwM + BWO6i3mr10C9/mbXUoInVXVODRu \ nlkdIXFPthSkBMytl5jAjaf1Ep4F3Y64WVwYXd9ASYpfNN5FMvxUzYbdkV7QNObsfHkAnr98uamFg \ nSJ0dGJ8svQ1DKiKz4db + zkzalXNHqh7mbV7kxRkT08GlocFEOp/xaLISlrH03CcKozerTbY/NkMx \ nXE7s7 + wAuREgjKdNkpjRYUTMdm/QhxcvJf8UU7tE89POHkZ1wghPpAFIJ6kdCVBewrfaJVdcwJk8 \ nWdzzaQIDAQAB \ n」 個}

順便說一句,這些數據是一個公共加密密鑰。

正如您可以看到第二個日誌條目每76個字符有n個。在網絡上研究這個問題,我發現其他人已經遇到了這個問題,但沒有人收到迴應,消除了這個問題。格式化。無影響。

我的Newtonsoft.Json.dll的產品版本是4.5.6.14930。任何人都知道爲什麼這可能會發生。我知道我可以消除字符串中的\ n,但這是我的最後手段。 謝謝, 迪安

+0

只是爲了確認,'retPair.publicKey'是一個'string'而不是'byte []',對嗎? –

回答

1

如所看到的在JSON規格上www.json.org,在一個字符串換行符在JSON時編碼爲\n

Railroad Diagram for JSON String

JSON.Net不引入換行字符到輸出任意的,而是你的原始字符串已經有換行符,所以他們必須對其進行編碼。

+0

你可以看到,retPair.publicKey中沒有換行符,所以我的原始字符串還沒有換行符。它們顯然是由serializeObject操作放在那裏的。沒有? –

+0

很難*清楚*看到,但是所有的'\ n'字符都與您粘貼到您的問題中的公鑰中的換行符精確對齊*。無論是在那裏開始,或者它是一個複製/粘貼神器,只是巧合地對齊。 –

+0

嘗試'JsonConvert.SerializeObject(retPair.Replace(「\ n」,「」))'看看你是否得到不同的結果。那麼你肯定會知道的。 –