2013-10-24 39 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的问题呢? –