【问题标题】:JSONDecodeError: Expecting property name enclosed in double quotes when applying function with json in itJSONDecodeError:应用带有json的函数时,期望用双引号括起来的属性名称
【发布时间】:2021-05-16 08:34:56
【问题描述】:

我正在尝试创建一个函数来准备我拥有的dataframes。这是函数

def prepare_data(x):
    parsed_df = pd.concat([pd.json_normalize(json.loads(js)) for js in x])
    // other further processes
    return parsed_df

但是当我用我的dataframes 之一对其进行测试时,它引发了错误

data_id99 = data_id99['json_col'].apply(prepare_data)

Output : JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)

如果我这样做的话效果很好(单行而不在函数中使用它)

test = pd.concat([pd.json_normalize(json.loads(js)) for js in data_id99['json_col']])

但是当我把它变成一个引发错误的函数时,我不知道我做错了什么,因为我认为我已经正确地将它应用于dataframe 的列并且该函数已经是正确的方式。如何解决这个问题?

【问题讨论】:

  • 你的 json 是如何创建的?
  • 它来自一个上传的csv,转换成json然后传递到数据库
  • 转json的过程好像有问题……
  • 但如果错了,test = pd.concat([pd.json_normalize(json.loads(js)) for js in data_id99['json_col']]) 行是否也不能正常工作?该行工作得很好(单行代码,不在函数内)并返回我想要的结果。问题是我需要能够将它与函数一起使用,因为我有很多 dataframes sob
  • 没关系,我已经找到了另一种方法来实现我想要的循环,无论如何谢谢

标签: python json pandas


【解决方案1】:

我相信您的 Json 文件格式可能有误。将 json 打印到控制台并在以下站点中检查其完整性:

https://www.google.com/url?sa=t&source=web&rct=j&url=https://jsonchecker.com/&ved=2ahUKEwi3u8KV6M3wAhVUC2MBHZFZBuQQFjAAegQIAxAC&usg=AOvVaw16qBGfRNySRFHOH-uyTIq3

当您的 Json 文件包含单引号 'property': 而不是双引号 "property" : 时,通常会发生此错误。

请注意,Json 标准明确要求后者。

【讨论】:

  • 但是我的 json 是双引号 {"NO":"1","NIM":"4313010001","NAME":...... 我已经从那个链接检查了它,我的 json 列确实包含 json 值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-24
  • 2019-01-04
相关资源
最近更新 更多