2013-10-24 41 views
1

這是我的服務器端C#代碼。JavaScriptSerializer返回的JSON字符串

JavaScriptSerializer jsSer = new JavaScriptSerializer(); 

string strJson = jsSer.Serialize(tableData); \\tableData is List type 
string strRawJson = Regex.Replace(strJson, "\\s{2,}", ""); \\ Remove Whitespaces 

這是我現在得到的strRawJson的值。

"[{\"RowNumber\":1, ... , "ActivityDate\":\"\\/Date(1378310400000)\\/\",\"ErrMessage\":null}]" 

這裏是我的第一個問題

我希望看到'ActivityDate'的值爲這種格式:'2013-10-24 12:00:00:000'。我能怎麼做?
請注意,我想這樣做在C#(JavaScript不),我也不想用JSON.NET

這裏是我的的第二個問題

正如你所看到的我的第三行代碼,我使用正則表達式來刪除一些空格。我通過JavaScriptSerializer生成JSON時是否有另一個可能的錯誤?

非常感謝您提前! :)

[編輯]
我明白JavascriptSerializer是非常有限的,但我還是能得到一些幫助,我的「第二」的問題,好嗎?或推薦另一個好的序列化程序?

+0

你爲什麼不把ActivityDate變成你所需格式的字符串? – Liam

+3

'JavaScriptSerializer'非常有限。如果它確實如你所願,那就太好了。如果你想讓它做一些不同的事情,那就搞定吧。儘管您有異議,您應該使用不同的序列化程序,如json.net。最後,在最後使用正則表達式來清除空白的事實應該是您沒有使用理想序列化器的線索。 –

+0

@Kirk Woll這是我的webservice(.asmx),我需要將myList序列化爲JSON字符串。如果那麼,你推薦使用哪個序列化程序?嗯..我不知道JavaScriptSerializer是非常有限的.. – Adrian

回答

-1

你使用MVC.net嗎?如果是這樣,你可以使用控制器的這種方法:

protected internal JsonResult Json(object data, JsonRequestBehavior behavior) 
{ 
    return this.Json(data, (string) null, (Encoding) null, behavior); 
} 

,如果你打電話給你的行動,你將收到平原JSON格式的字符串。

您可以使用string.Format()來設置日期的格式,或者只是在js中執行。

+0

爲什麼我被拒絕了? – sergej

+1

你認爲MVC用於序列化json的串行器是什麼? (提示,它是'JavaScriptSerializer')鑑於此,您的回答如何解決OP的問題呢? –