如何读取JSON的值与数据类型的括号?



我有一个JSON文件,构建如下:

"key" : DataType("value")

,

[
{
"timestamp" : ISODate("2022-03-10T13:50:51.688Z"),
"some_field" : ObjectId("value"),
"normal_key" : "normal_value"
},
{
"different_field" : "just_value"
"key" : "value"
}
]

我似乎找不到一种方法来读取它,因为一旦我遇到数据类型,我就会得到一个错误:

JSONDecodeError: Expecting value: line x column y (char z)

,这是第一个dtype的位置。

有什么结构化的方法可以处理这个吗?

我认为如果你有这样的自定义数据你可以简单地创建临时类作为解决方案,像这样:

class TmpClass:
def __call__(self, val):
return str(val)
ISODate = TmpClass()
ObjectId = TmpClass()

a = [{
"timestamp" : ISODate("2022-03-10T13:50:51.688Z"),
"some_field" : ObjectId("value"),
"normal_key" : "normal_value"
},
{
"different_field" : "just_value",
"key" : "value"
}
]
print(a)

如果你想为数据类型定制逻辑,那么你可以用它们的__call__方法分别实现这两个类,这将相应地改变你的数据。我只是把它们改成了字符串。

在我的问题中,我想知道是否有一种类似JSON的方式来处理文件本身内部的数据类型规范,我意识到字符串处理可能需要完成。

所以最终我所做的就是用空字符串替换不必要的子字符串,然后处理pandas数据框架本身的数据类型。

with open(path) as f:
json_data = f.read()
json_data = json_data.replace( 'ISODate(','')
json_data = json_data.replace( 'ObjectId(','')
json_data = json_data.replace( ')','')
print(json_data)
df = pd.read_json(json_data, orient ='records')

您可以使用python的json库。

s1为对象

jsonstr1 = json.dumps(s1.__dict__)  # <-- serialize the class to a JSON string.

将JSON字符串放入字典中,以取代对象。

最新更新