当我从ASP.NET Web服务返回到客户端时,我遇到了一个问题。返回的JSON包含在MongoDB数据库中生成的ObjectId
,我需要在客户端中使用它。
运行
时问题开始了 var res = jQuery.parseJSON(data.d)[0]; // array of companies
我收到错误:
Uncaught SyntaxError: Unexpected token O
我假设Javascipt JSON解析器不识别ObjectId
。
在我的.NET C#代码中,我将seralized并返回JSON:
var jsonWriterSettings = new JsonWriterSettings { OutputMode = JsonOutputMode.Strict };
return results.ToJson(jsonWriterSettings);
来自webservice的返回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。但是,我不知道这是否是合适的解决方案。
答案 0 :(得分:2)
我通常不建议向用户公开ObjectId,因为24位十六进制字符串不是非常用户友好。但是当你仍然想要这样做时,你应该能够使用toString方法将其转换为字符串。
您发布的JSON示例代码不是有效的JSON,因此在客户端解析失败并不奇迹。这意味着您需要找到一个不同的工具(或者您可能没有正确使用它)来生成您的JSON或在转换之前将ObjectId转换为字符串。
答案 1 :(得分:0)
您需要更改您的网络服务,以便它返回:
[{ "companies" : [{ "id" : "53e129ed0000000000000000", "name" :
"Company 1" }, { "id" : "53e12a290000000000000000", "name" :
"Company 2" }, { "id" : "53e12a650000000000000000", "name" :
"Company 3" }] }]"
否则它是无效的JSON
答案 2 :(得分:-1)
var userid=results[i].id;
获取objectId值