python - Medium.com 无效的 Json?
问题描述
我正在尝试从 Medium.com 获取最新帖子,例如,我去这里
https://medium.com/circle-blog/latest?format=json
但是当我将整个 JSON 复制并粘贴到 JSONEditorOnline.org 时,我收到错误消息
Error: Parse error on line 1:
])}while(1);</x>{"su
^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[', got ']'
我意识到错误是因为前面的随机东西
])}while(1);</x>
那么我将如何使用 Python 删除它呢?
删除后,我想将其转储到 JSON 文件中
with open('medium.json', 'w') as json1:
json1.write(json.dumps(JSONWITHWHILE(1)REMOVED))
我该怎么做呢?
解决方案
我不会打扰它,因为它显然不是一个有效的 JSON,但如果你需要它,你可以尝试找到第一个打开的花括号并简单地删除它之前的所有内容:
valid_json = broken_json[broken_json.find('{'):]
解释:
broken_json.find('{')
{
返回字符串中字符第一次出现的位置(索引)broken_json
broken_json[X:]
- 是一个字符串切片,它返回broken_json
从该位置开始的子字符串X
与 LeKhan 的解决方案相比,一个优势是当 JSON 变为有效时,即使有此修复,您的代码仍将正常工作。</x>
此外,如果它的字段中包含子字符串(这可能是有效的),他的解决方案将返回一个损坏的 JSON 。
注意:它可能不是错误,但出于某种原因故意存在。例如,模块 Medium JSON feed处理它的方式非常相似- 它还在第一个打开的花括号之前剥离了所有内容。
根据这篇文章,它可以防止“ JSON hacking ”,不管它是什么意思。
推荐阅读
- python - 按两个标准对列进行排序
- python - 根据班级更改车身颜色
- sql - SQL Server:如何将字符串“ddMMM”替换或转换为日期“MMMdd”?
- python - Python - 将编码字符串的转义字符转换为 %
- jsf - 如何使用 Java EE Security @CustomFormAuthenticationMechanismDefinition 重定向到原始请求 URL
- java - 如何延迟 CallNextHookEx 或 PostMessage 的返回以模拟延迟的鼠标事件?
- java - 限制子项大小(VBox)[宽度]
- kotlin - 如何使用 Mockk 在测试类中模拟依赖项而不将其作为参数传递?
- xamarin - 如何在 xamarin 表单中显示带有可滚动而不是更多(3 个点)的选项卡式图标
- c# - 无法在 html dom 中定位元素,该元素位于 selenium 内部和对象标记中