从文件加载JSON对象时出现有线问题,JSON对象为:
{"log":"{\"log\":\"[ ] 5% db.btree\\r[= ] 10% db.btree\\r[= ] 15% db.btree\\r[== ] 20% db.btree\\r[== ] 25% db.btree\\r[=== ] 30% db.btree\\r[=== ] 35% db.btree\\r[==== ] 40% db.btree\\r[==== ] 45% db.btree\\r[===== ] 50% db.btree\\r[===== ] 55% db.btree\\r[====== ] 60% db.btree\\r[====== ] 65% db.btree\\r[======= ] 70% db.btree\\r[======= ] 75% db.btree\\r[======== ] 80% db.btree\\r[======== ] 85% db.btree\\r[========= ] 90% db.btree\\r[========= ] 95% db.btree\\r[==========] 100% db.btree\\rff 00000000 . end of MapIt for_write is 0 - map-style 0 append_fd is -1\\n\",\"stream\":\"stderr\",\"time\":\"2019-02-26T20:54:40.335910928Z\"}","pod_name":"xxx-xxx-0","namespace_name":"default","host":"ip-11-0-194-0.us-west-1.compute.internal","container_name":"xxx"}
在使用log_content = json.loads(input)加载JSON对象之后,该json对象看起来不错。
'log': '[ ] 5% db.btree\r[= ] 10% db.btree\r[= ] 15% db.btree\r[== ] 20% db.btree\r[== ] 25% db.btree\r[=== ] 30% db.btree\r[=== ] 35% db.btree\r[==== ] 40% db.btree\r[==== ] 45% db.btree\r[===== ] 50% db.btree\r[===== ] 55% db.btree\r[====== ] 60% db.btree\r[====== ] 65% db.btree\r[======= ] 70% db.btree\r[======= ] 75% db.btree\r[======== ] 80% db.btree\r[======== ] 85% db.btree\r[========= ] 90% db.btree\r[========= ] 95% db.btree\r[==========] 100% db.btree\rff 00000000 . end of MapIt for_write is 0 - map-style 0 append_fd is -1\n', 'stream': 'stderr', 'time': '2019-02-26T20:54:40.335910928Z'}
但是,当我打印漂亮的照片时,我得到了
{ 'log': '[ ] 5% db.btree\r'
'[= ] 10% db.btree\r'
'[= ] 15% db.btree\r'
'[== ] 20% db.btree\r'
'[== ] 25% db.btree\r'
'[=== ] 30% db.btree\r'
'[=== ] 35% db.btree\r'
'[==== ] 40% db.btree\r'
'[==== ] 45% db.btree\r'
'[===== ] 50% db.btree\r'
'[===== ] 55% db.btree\r'
'[====== ] 60% db.btree\r'
'[====== ] 65% db.btree\r'
'[======= ] 70% db.btree\r'
'[======= ] 75% db.btree\r'
'[======== ] 80% db.btree\r'
'[======== ] 85% db.btree\r'
'[========= ] 90% db.btree\r'
'[========= ] 95% db.btree\r'
'[==========] 100% db.btree\r'
'ff 00000000 . end of MapIt for_write is 0 - '
'map-style 0 append_fd is -1\n',
'stream': 'stderr',
'time': '2019-02-26T20:54:40.335910928Z'}
当我提到log_content ['log']
ff 00000000 . end of MapIt for_write is 0 - map-style 0 append_fd is -1
不确定是错误还是我做错了什么?看起来不像'['和']'破坏了JSON数据,请删除它,问题仍然存在,谢谢。
答案 0 :(得分:1)
这里没有丢失或损坏的数据。
您使用漂亮的工具打印了漂亮的输出,而不是JSON序列化程序,该工具旨在漂亮地打印Python数据结构。它看起来不像有效的JSON,因为它不应该是有效的JSON。该输出是一个有效的Python表达式,其计算结果等于输入到漂亮打印机的字典。 (该表达式利用隐式字符串文字串联将字符串拆分为多行。)
您的最后一行印有print(log_content['log'])
之类的内容,它打印log_content['log']
字符串的内容,而不是字符串的repr
表示形式或其他表示形式。您的终端将\r
字符解释为一条指令,以将光标返回到行的开头(并可能清除行,具体取决于终端的详细信息)。这意味着输出的较后部分将打印在较早的部分上。查看字符串中的内容,很明显,最初生成该文本的任何内容都是故意这样做的,以生成进度条,该进度条会在适当的位置更新。