当前位置: 首页 > 知识库问答 >
问题:

是否可以强制morphia将ObjectId映射到十六进制表示?

姬向明
2023-03-14

我目前正在一个kotlin多项目解决方案。我有一个项目定义了一些数据类,并定义了一个api来访问MongoDB。objectId是自动创建的。这个项目使用的是Morphia:1.3.2。使用以下函数存储条目:

fun store(myClass: MyClass) = db.save(myClass).let { myClass.id?.toHexString() ?: "0" }
id:
  counter:15304909
  date:"2018-08-27T23:45:35.000+0000"
  machineIdentifier:123456
  processIdentifier:1234
  time:1535413535000
  timeSecond:1535413535
  timestamp:1535413535

由于在请求目标中发现java.lang.IllegalArgumentException:无效字符,我也无法将对象重新映射到有效id。有效字符在RFC7230和RFC3986异常中定义。请求如下所示:

myClass?id={"timestamp":1535413631,"machineIdentifier":123456,"processIdentifier":1234,"counter":16576969,"time":1535413631000,"date":"2018-08-27T23:47:11.000+0000","timeSecond":1535413631}    

我有点不知道如何解决这个问题。

共有1个答案

佴保臣
2023-03-14

根据REST框架的不同,您需要提供一个序列化程序,以便将ObjectId写为字符串版本。大多数这样的框架一旦配置好,就会使其透明,所以您只需要担心将对象返回REST服务,框架就会正确地序列化。

就我个人而言,我不会试图改变它在数据库中的序列化方式。ObjectId是一个非常好的_id类型,我不会更改它。

 类似资料:
  • 问题内容: 如何将RGB格式的颜色转换为十六进制格式,反之亦然? 例如,转换为。 问题答案: 注 :这两个版本的期待整数值,并且,所以你需要,如果你有非整数值做自己的舍入。 以下将执行RGB到十六进制的转换,并添加任何所需的零填充: 转换另一种方式: 最后,在答案中讨论并在@cwolves的评论中建议使用的替代版本: 更新 这是它的一个版本,还解析了一个速记的三元组,例如“#03F”:

  • 我需要转换十六进制- 当我运行这个错误实际上是显示我需要的值但我不能得到它 groovy.lang.的方法:静态java.lang.我nteger.parseInt()适用于参数类型:(java.math.大整数,java.lang.整数)值:[28855032353026779507009821653742961358,...]可能的解决方案:parseInt(java.lang.String,

  • 问题内容: 我这里有一个将十进制转换为十六进制的函数,但它以相反的顺序打印。我该如何解决? 问题答案: 如果要自己编写此代码而不是使用内置函数,则可以在打印当前数字之前简单地进行递归调用:

  • 本文向大家介绍如何将十六进制转换为十进制?,包括了如何将十六进制转换为十进制?的使用技巧和注意事项,需要的朋友参考一下 而十六进制数是具有值是16的数字系统中的一个并且它具有唯一的16个码元:0,1,2,3,4,5,6,7,8,9和A,B,C,d,E ,其中A,B,C,D,E和F分别是十进制值10、11、12、13、14和15的单位表示。而十进制系统是最熟悉的号码系统向公众开放。它是10的基数,只

  • 本文向大家介绍如何将十进制转换为十六进制?,包括了如何将十进制转换为十六进制?的使用技巧和注意事项,需要的朋友参考一下 十进制是公众最熟悉的数字系统。它是基数10,只有10个符号-0、1、2、3、4、5、6、7、8和9。而十六进制是计算机或数字系统中最常见的数字系统颜色表示。它是基数16,只有16个符号:0、1、2、3、4、5、6、7、8、9和A,B,C,D,E,F。这些A,B,C,D ,E,F分

  • 两周以来,我一直在努力和阅读来解决这个问题,但我尝试的一切都没有奏效:-( 我正在使用python 2.7。 据我所知,我确实有一个base64字符串,格式如下: 我想把它转换成十六进制字符串。00000000194BD636AEDEAE4C9827C9465288D7F40700BA89A9BA12E1314B81606DB385F3B7B100000074656E0000BA89A9BA12E