如何从对象中解析对象ID
How to parse object id from object
我有两种类型的项目,Java 和 Node js
java 项目 returns 带有 ObjectId 的详细信息
{
"timestamp": 1491806328,
"machineIdentifier": 9737042,
"processIdentifier": 6393,
"counter": 1399563,
"date": 1491806328000,
"time": 1491806328000,
"timeSecond": 1491806328
}
在节点 Js 中,我使用的是 Mongoose。现在我不知道如何将其解析为 nodejs equalant ObjectId。
编辑:
我试过的代码,
var mongoose = require("mongoose");
var idToParse = {
"timestamp": 1491806328,
"machineIdentifier": 9737042,
"processIdentifier": 6393,
"counter": 1399563,
"date": 1491806328000,
"time": 1491806328000,
"timeSecond": 1491806328
};
mongoose.Schema.Types.ObjectId(idToParse);
它returns未定义。
如果您正在使用 Java ,请尝试使用 Jackson 将 POJO 映射到 json 并为 Object Id 字段使用自定义序列化程序,以便 Jackson 理解它需要提供等效的字符串的对象 ID。
自定义序列化程序将如下所示:
public class ObjectIdSerializer extends JsonSerializer<ObjectId>{
@Override
public void serialize(ObjectId id, JsonGenerator jgen, SerializerProvider provider)
throws IOException, JsonProcessingException {
if(id == null){
jgen.writeNull();
}else{
jgen.writeString(id.toString());
}
}}
并且您可以在 POJO 中注释 ObjectId 字段,例如:
@Id
@JsonSerialize(使用=ObjectIdSerializer.class)
私人 ObjectId id;
找到了答案。
function hex(length, n) {
n = n.toString(16);
return (n.length===length)? n : "00000000".substring(n.length, length) + n;
}
var idToParse = {
"timestamp": 1491806328,
"machineIdentifier": 9737042,
"processIdentifier": 6393,
"counter": 1399563,
"date": 1491806328000,
"time": 1491806328000,
"timeSecond": 1491806328
};
var idString = hex(8,idToParse.timestamp)+hex(6,idToParse.machineIdentifier)+hex(4,idToParse.processIdentifier)+hex(6,idToParse.counter);
我有两种类型的项目,Java 和 Node js
java 项目 returns 带有 ObjectId 的详细信息
{
"timestamp": 1491806328,
"machineIdentifier": 9737042,
"processIdentifier": 6393,
"counter": 1399563,
"date": 1491806328000,
"time": 1491806328000,
"timeSecond": 1491806328
}
在节点 Js 中,我使用的是 Mongoose。现在我不知道如何将其解析为 nodejs equalant ObjectId。
编辑:
我试过的代码,
var mongoose = require("mongoose");
var idToParse = {
"timestamp": 1491806328,
"machineIdentifier": 9737042,
"processIdentifier": 6393,
"counter": 1399563,
"date": 1491806328000,
"time": 1491806328000,
"timeSecond": 1491806328
};
mongoose.Schema.Types.ObjectId(idToParse);
它returns未定义。
如果您正在使用 Java ,请尝试使用 Jackson 将 POJO 映射到 json 并为 Object Id 字段使用自定义序列化程序,以便 Jackson 理解它需要提供等效的字符串的对象 ID。 自定义序列化程序将如下所示:
public class ObjectIdSerializer extends JsonSerializer<ObjectId>{
@Override
public void serialize(ObjectId id, JsonGenerator jgen, SerializerProvider provider)
throws IOException, JsonProcessingException {
if(id == null){
jgen.writeNull();
}else{
jgen.writeString(id.toString());
}
}}
并且您可以在 POJO 中注释 ObjectId 字段,例如:
@Id
@JsonSerialize(使用=ObjectIdSerializer.class)
私人 ObjectId id;
找到了答案。
function hex(length, n) {
n = n.toString(16);
return (n.length===length)? n : "00000000".substring(n.length, length) + n;
}
var idToParse = {
"timestamp": 1491806328,
"machineIdentifier": 9737042,
"processIdentifier": 6393,
"counter": 1399563,
"date": 1491806328000,
"time": 1491806328000,
"timeSecond": 1491806328
};
var idString = hex(8,idToParse.timestamp)+hex(6,idToParse.machineIdentifier)+hex(4,idToParse.processIdentifier)+hex(6,idToParse.counter);