c# - 如何在Javascript中处理ObjectId,无法解析它

标签 c# javascript asp.net json mongodb

在读取从 ASP.NET Web 服务返回到客户端的 JSON 时遇到问题。返回的 JSON 包含在 MongoDB 数据库中生成的 ObjectId,我在客户端需要它。

当我运行时问题就开始了

 var res = jQuery.parseJSON(data.d)[0]; // array of companies

我收到错误:

Uncaught SyntaxError: Unexpected token O 

我假设 Javascipt JSON 解析器无法识别 ObjectId

在我的 .NET C# 代码中,我序列化并返回 JSON:

 var jsonWriterSettings = new JsonWriterSettings { OutputMode = JsonOutputMode.Strict };
return results.ToJson(jsonWriterSettings);

从 Web 服务返回 JSON 字符串:

[{ "companies" : [{ "id" : ObjectId("53e129ed0000000000000000"), "name" :
 "Company 1" }, { "id" : ObjectId("53e12a290000000000000000"), "name" :
 "Company 2" }, { "id" : ObjectId("53e12a650000000000000000"), "name" :
 "Company 3" }] }]"

如何在 Javascript 中使用 ObjectId。我确实需要某些 HTML 元素中的 ObjectId 字符串(例如下拉列表值)?

更新:我发现了 BSON seralizer here 。但是,我不知道这是否是合适的解决方案。

最佳答案

我通常不建议向用户公开 ObjectId,因为 24 位十六进制字符串不太用户友好。但是当您仍然想这样做时,您应该能够将其转换为字符串 toString方法。

您发布的 JSON 示例代码不是有效的 JSON,因此客户端解析失败也就不足为奇了。这意味着您需要找到一个不同的工具(或者可能您只是没有正确使用它)来生成 JSON 或在转换之前将 ObjectId 转换为字符串。

关于c# - 如何在Javascript中处理ObjectId,无法解析它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25133931/

相关文章:

c# - 写在ASP.NET响应流上的一些问题

c# - MVC 编译错误,在临时 ASP.NET 文件中使用 WebApplication1

javascript - 将 Google Re-CAPTCHA 表单添加到 PHP "Contact us form"

javascript - 无法向 Mongoose 函数中的对象添加属性

javascript - 是否可以创建ListItem的属性?

asp.net - 可以创建 ASP.NET MVC 网站(相对于 Web 应用程序)

c# - 在 Windows Vista 和 7 中,我无法访问 %DEFAULTUSERPROFILE% 系统变量 - 它显示为未找到

c# - 如何使用 SQL Server 数据库部署 Windows 应用程序?

c# - Gtk.NodeView.AddNode 中的异常

c# - 每次单击带有 OnClick 事件的按钮时,如何防止页面进入顶部?