MongoDB存储字符串时的问题

at1943 2011-07-05 10:28:19
我使用log4j将日志输出到MongoDB数据库,我想使用MDC将一个map输出到Json字符串中。
日志中map的样式是{CODE1=00022, CODE=0002}
这不符合json规范,会报错
我就重写的map的toString()方法,输出{"CODE1"="00022", "CODE"="0002"}
但是写入数据库的时候,MongoDB会将字符串中的转义字符也显示出来,{\"CODE1\"=\"00022\", \"CODE\"=\"0002\"}如:。还是会有JSONParseException
有什么解决办法吗?
我的目的就是将map以{"CODE1"="00022", "CODE"="0002"}样式放到MongoDB一条文档的子文档中。如

{
"_id" : { "$oid" : "4e126e6a8afbc8dd60f92768"} ,
"LOGTIME" : "2011-07-05 09:52:42" ,
"LOGLEVEL" : "INFO" ,
"LOGTYPE" : {"CODE1"="00022", "CODE"="0002"} , ←←此处
"CLASSNAME" : "test.LogTest" ,
"METHODNAME" : "main" ,
"PATH" : "test.LogTest.main(LogTest.java:49)" ,
"MESSAGE" : "java.lang.IndexOutOfBoundsException: Index: 4, Size: 0\r\n\tat java.util.ArrayList.RangeCheck(ArrayList.java:547)\r\n\tat java.util.ArrayList.get(ArrayList.java:322)\r\n\tat test.LogTest.main(LogTest.java:44)\r\n"
}
...全文
378 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
at1943 2011-07-05
  • 打赏
  • 举报
回复
我犯了个错误,json中应该用:而不是=
这样只要将map中的toString方法改一下就实现了。
map 的toString 得到如下格式{'CODE1':'00022', 'CODE':'0002'}
写入数据库后就是

{ "_id" : { "$oid" : "4e1296b08afb62efeb02876c"} , "LOGTIME" : "2011-07-05 12:44:32" , "LOGLEVEL" : "INFO" ,
"LOGTYPE" : { "1" : "11" , "CODE1" : "00022" , "CODE" : "0002" , "xx" : "ssdfjd"} , ←←这里
"CLASSNAME" : "test.LogTest" , "METHODNAME" : "main" , "PATH" : "test.LogTest.main(LogTest.java:49)" , "MESSAGE" : "java.lang.IndexOutOfBoundsException: Index: 4, Size: 0\r\n\tat java.util.ArrayList.RangeCheck(ArrayList.java:547)\r\n\tat java.util.ArrayList.get(ArrayList.java:322)\r\n\tat test.LogTest.main(LogTest.java:44)\r\n"}
虽能对日志记录提点建议分就给谁了,我菜鸟
at1943 2011-07-05
  • 打赏
  • 举报
回复
请求log4j中info(Object message, Throwable t)传入的异常t是干什么的。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧