- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
您好,我正在遍历一个 JSON 数组,该数组由 mongoDB 中的文档查询产生。事实上,我遇到了以下行为,但我不知道为什么会这样:
in key: _bsontype |value: ObjectID
in key: id |value: S÷¯çò9þ w
in key: _bsontype |value: ObjectID
in key: id |value: S÷¯çò9þ h
in key: _bsontype |value: ObjectID
in key: id |value: S÷¯çò9þ h
in key: name |value: Default Process
in key: processType |value: Public
in key: id |value: BPMNDiagram_1
in key: name |value: procurement subprocess
如你所见,这是 wear... 这是我的代码:
function changeIDs(json, map, count){
for(var key in json){
if(json.hasOwnProperty(key))
if(typeof json[key] === 'object')
changeIDs(json[key], map, count);
else{
console.log("in key: "+key + " |value: "+json[key]);
}
}
}
这是我输入的一部分(json 参数):
[
{
"_id": "538df78eafe7f28d39fe2077",
"processId": "538df71bafe7f28d39fe2068",
"processMeta": {
"id": "538df71bafe7f28d39fe2068",
"name": "Default Process",
"processType": "Public"
},
"diagram": {
"id": "BPMNDiagram_1",
"name": "procurement subprocess"
},
"plane": {
"id": "BPMNPlane_1",
"bpmnElement": "538df71bafe7f28d39fe2068"
}
},
{other objects..},{other objects..}
]
是的,processId,和_id是用ObjectId函数生成的,好像这里是问题出现的地方,我不太确定,但我的猜测是每个_bsontype对应于mongoSB Object Id,这是一个对象所以我的函数递归地进入这个内部..得到以下 S÷¯çò9þ w
..,我说得对吗?
如果我无法在我的 for 中获取“processId”和“_id”键,似乎也是如此,我想是我的 _bsontype ...所以最后,我的问题是,如何在没有得到结果的情况下遍历我的对象?,你必须看到有一个包含垃圾数据的“id”属性,我不希望它出现在我的结果中寻找例如,所有键 ID,但仍然能够为我的属性“processId”或“_id”获取 ObjectId.str 值。
提前致谢。
最佳答案
以防万一,如果将来有其他不幸的人遇到同样的问题。
如您所见,我的函数 changeIDs 获得了 3 个参数,我只是更改了 json 参数,它应该是一个 json(它确实是)您可以在我的问题中看到我的 json 输出作为文本,所以它是有效的json,但是我解析了一个 stringify 字符串..然后我再次尝试..它正在工作。
那么解决方案呢? newJson = JSON.parse(JSON.stringify(json));
为什么?好吧,我更好的选择是,通过这种方式,当我们对一个对象进行字符串化时,它会按以下方式更改对象:
例如,如果一个 json 有一个对象 DATE,这个对象将被字符串化为 Date.toString(),所以它会存储字符串表示。如果函数没有 to 字符串,则将是未定义的。
最后这就是为什么在执行字符串化后它可以工作,我的函数 ObjectId() 没有在我的字符串化中存活下来,但它转换为它包含的字符串值,即 Mongo 对象 ID 值...
关于javascript - 如何使用 _bsontype 属性处理来自 mongoDB 的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24024647/
你能比较一下属性吗 我想禁用文本框“txtName”。有两种方式 使用javascript,txtName.disabled = true 使用 ASP.NET, 哪种方法更好,为什么? 最佳答案 我
Count 属性 返回一个集合或 Dictionary 对象包含的项目数。只读。 object.Count object 可以是“应用于”列表中列出的任何集合或对
CompareMode 属性 设置并返回在 Dictionary 对象中比较字符串关键字的比较模式。 object.CompareMode[ = compare] 参数
Column 属性 只读属性,返回 TextStream 文件中当前字符位置的列号。 object.Column object 通常是 TextStream 对象的名称。
AvailableSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。 object.AvailableSpace object 应为 Drive 
Attributes 属性 设置或返回文件或文件夹的属性。可读写或只读(与属性有关)。 object.Attributes [= newattributes] 参数 object
AtEndOfStream 属性 如果文件指针位于 TextStream 文件末,则返回 True;否则如果不为只读则返回 False。 object.A
AtEndOfLine 属性 TextStream 文件中,如果文件指针指向行末标记,就返回 True;否则如果不是只读则返回 False。 object.AtEn
RootFolder 属性 返回一个 Folder 对象,表示指定驱动器的根文件夹。只读。 object.RootFolder object 应为 Dr
Path 属性 返回指定文件、文件夹或驱动器的路径。 object.Path object 应为 File、Folder 或 Drive 对象的名称。 说明 对于驱动器,路径不包含根目录。
ParentFolder 属性 返回指定文件或文件夹的父文件夹。只读。 object.ParentFolder object 应为 File 或 Folder 对象的名称。 说明 以下代码
Name 属性 设置或返回指定的文件或文件夹的名称。可读写。 object.Name [= newname] 参数 object 必选项。应为 File 或&
Line 属性 只读属性,返回 TextStream 文件中的当前行号。 object.Line object 通常是 TextStream 对象的名称。 说明 文件刚
Key 属性 在 Dictionary 对象中设置 key。 object.Key(key) = newkey 参数 object 必选项。通常是 Dictionary 
Item 属性 设置或返回 Dictionary 对象中指定的 key 对应的 item,或返回集合中基于指定的 key 的&
IsRootFolder 属性 如果指定的文件夹是根文件夹,返回 True;否则返回 False。 object.IsRootFolder object 应为&n
IsReady 属性 如果指定的驱动器就绪,返回 True;否则返回 False。 object.IsReady object 应为 Drive&nbs
FreeSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。只读。 object.FreeSpace object 应为 Drive 对象的名称。
FileSystem 属性 返回指定的驱动器使用的文件系统的类型。 object.FileSystem object 应为 Drive 对象的名称。 说明 可
Files 属性 返回由指定文件夹中所有 File 对象(包括隐藏文件和系统文件)组成的 Files 集合。 object.Files object&n
我是一名优秀的程序员,十分优秀!