将 MongoDB Rest 的 Guid 转换为 C# CLR

发布于 2024-12-01 07:32:57 字数 370 浏览 0 评论 0原文

我将 mongodb 与 Rest 一起使用。每个文档都由字段 Id(Guid) 和名称(字符串)组成

以下是我访问网页时显示的内容:

"_id" : { "$binary" : "Oq4RFClrRUOtIp89AQTGPw==",
        "$type" : "03"
"name" : "HelloWorld"

在 mongodb 中,我的 Guid 被转换为 UUID(比如说我的 JMongoBrowser)并显示为 46eb229f-b493-5630- b0d7-aa00499fafa0。

但是当我访问其余网页时,它被切成两部分(二进制和类型)。那么如何将其转换为 C# 对象呢?

谢谢

I use mongodb with Rest. Every document is composed of a field Id(Guid) and Name (string)

Here's what's displayed when I access the webpage :

"_id" : { "$binary" : "Oq4RFClrRUOtIp89AQTGPw==",
        "$type" : "03"
"name" : "HelloWorld"

In mongodb, my Guid was transformed into a UUID (say my JMongoBrowser) and is displayed as 46eb229f-b493-5630-b0d7-aa00499fafa0.

But when I access my rest webpage, It's cutted in two parts (a binary, and a type). So how can I cast it into C# object ?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

世界和平 2024-12-08 07:32:57

该字符串是表示 guid 字节数组的 ba​​se-64 编码字符串,但您需要处理字节 UUD 编码,因此您可以像这样返回它:

public static Guid ToGuid(string jsonUuid)
{
    byte[] bytes = Convert.FromBase64String(jsonUuid);
    byte[] rbytes = new byte[16];
    rbytes[0] = bytes[4];
    rbytes[1] = bytes[5];
    rbytes[2] = bytes[6];
    rbytes[3] = bytes[7];
    rbytes[4] = bytes[2];
    rbytes[5] = bytes[3];
    rbytes[6] = bytes[0];
    rbytes[7] = bytes[1];
    rbytes[8] = bytes[15];
    rbytes[9] = bytes[14];
    rbytes[10] = bytes[13];
    rbytes[11] = bytes[12];
    rbytes[12] = bytes[11];
    rbytes[13] = bytes[10];
    rbytes[14] = bytes[9];
    rbytes[15] = bytes[8];
    return new Guid(rbytes);
}

或像这样:

public static Guid ToGuid(string jsonUuid)
{ 
    return new Guid(Convert.FromBase64String(jsonUuid));
}

The string is a base-64 encoded string representing the guid's byte array, but you need to deal with byte UUD encoding, so you can have it back like this:

public static Guid ToGuid(string jsonUuid)
{
    byte[] bytes = Convert.FromBase64String(jsonUuid);
    byte[] rbytes = new byte[16];
    rbytes[0] = bytes[4];
    rbytes[1] = bytes[5];
    rbytes[2] = bytes[6];
    rbytes[3] = bytes[7];
    rbytes[4] = bytes[2];
    rbytes[5] = bytes[3];
    rbytes[6] = bytes[0];
    rbytes[7] = bytes[1];
    rbytes[8] = bytes[15];
    rbytes[9] = bytes[14];
    rbytes[10] = bytes[13];
    rbytes[11] = bytes[12];
    rbytes[12] = bytes[11];
    rbytes[13] = bytes[10];
    rbytes[14] = bytes[9];
    rbytes[15] = bytes[8];
    return new Guid(rbytes);
}

or like this:

public static Guid ToGuid(string jsonUuid)
{ 
    return new Guid(Convert.FromBase64String(jsonUuid));
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文