在读取从 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/