我想用json编写一个日志文件。
在查看了一些用于格式化灵感和最佳实践的库(winston for node.js、apache的json日志选项等)之后,我注意到几乎所有库都编写了多个根元素,而不是使用数组或根元素。
例子:
{“时间”:“2012-09-20t20:27:59z”,“级别”:“信息”,“消息”:“你好世界”}{“时间”:“2012-09-20t21:37:59z”,“级别”:“信息”,“消息”:“再次打招呼”}
与
[{“time”:“2012-09-20t20:27:59z”,“level”:“info”,“message”:“hello world”},{“time”:“2012-09-20t21:37:59z”,“level”:“info”,“message”:“hello again”}]
在技术上,如果拥有多个根元素是无效的json,为什么要这样做?
最佳答案
当记录时,您将继续添加新的日志项。你怎么知道什么时候关闭阵列?你的日志记录什么时候“完成”?可以使用空数组[]
开始日志,但是在添加条目时,必须继续在文件中查找以找到正确的位置,并检查是否需要逗号。
或者您可以将每个条目作为一个单独的根对象来编写,并且每次写出的内容都是独立的,并附加到文件的末尾。那就简单多了。
日志不是一个json对象,即整个日志没有形成有效的json字符串。它是一系列独立的json对象。单个条目是您应该考虑的单元,而不是整个日志。