如何在Javascript中处理ObjectId,Can';t解析它
本文关键字:Can Javascript ObjectId 处理 | 更新日期: 2023-09-27 18:16:30
在读取从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。然而,我不知道这是否是合适的解决方案。
我通常不建议向用户公开ObjectId,因为24位十六进制字符串不是很友好。但是,当您仍然想这样做时,您应该能够使用其toString方法将其转换为字符串。
您发布的JSON示例代码不是有效的JSON,因此客户端解析失败并不奇怪。这意味着你需要找到一个不同的工具(或者你只是没有正确使用它(来生成JSON,或者在转换之前将ObjectId转换为字符串
您需要更改web服务,以便它返回:
[{ "companies" : [{ "id" : "53e129ed0000000000000000", "name" :
"Company 1" }, { "id" : "53e12a290000000000000000", "name" :
"Company 2" }, { "id" : "53e12a650000000000000000", "name" :
"Company 3" }] }]"
否则它是无效的JSON
var userid=results[i].id;
获取对象ID值