如何从对象中解析对象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);