【问题标题】:Returned JSON string from JavaScriptSerializer从 JavaScriptSerializer 返回的 JSON 字符串
【发布时间】:2013-10-24 13:32:53
【问题描述】:

这是我的服务器端 C# 代码。

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# (NOT JAVASCRIPT) 中执行此操作,我也不想使用 JSON.NET

这是我的第二个问题

您可以看到我的第三行代码,我使用 Regex 删除了一些空格。当我通过 JavaScriptSerializer 生成 JSON 时是否还有其他可能的错误?

提前非常感谢您! :)

[编辑]
我知道 JavascriptSerializer 非常有限,但是我仍然可以为我的“第二个”问题获得一些帮助吗?还是推荐其他好的序列化器?

【问题讨论】:

  • 你为什么不把 ActivityDate 变成你需要的格式的字符串?
  • JavaScriptSerializer 非常有限。如果它完全符合您的要求,那就太好了。如果你想让它做一些不同的事情,那你就完蛋了。尽管您反对,您应该使用不同的序列化程序,例如 json.net。最后,您最后使用正则表达式来消除空格这一事实应该表明您没有使用理想的序列化程序。
  • Json.Net 现在也受到 microsoft web API 的支持,所以它并不是说它是一个夜间飞行的第 3 方组件,随时都会消失。
  • blog by hanselman 详细介绍。请参阅“我们网络团队将在发布时将 JSON.NET 作为默认的 JSON 序列化器包含在 Web API 中,这样会很好。”
  • 它是第 3 方,但微软开始自己使用它,因为他们意识到它比内置的更好。

标签: c# regex json web-services javascriptserializer


【解决方案1】:

您使用 MVC.net 吗?如果是这样,你可以使用控制器的这个方法:

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

如果您调用您的操作,您将收到纯 json 格式的字符串。

您可以使用 string.Format() 来格式化您的日期,或者只是在 js 中进行。

【讨论】:

  • 您认为 MVC 使用什么序列化器来序列化 json? (提示,它是 JavaScriptSerializer)鉴于此,您的回答如何解决 OP 的问题?
猜你喜欢
  • 1970-01-01
  • 2010-12-04
  • 1970-01-01
  • 1970-01-01
  • 2021-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多