python - Json 转储字典抛出 TypeError : keys must be a string

标签 python json simplejson

我正在尝试使用 json.dumps 将以下 dict 转换为 JSON:

 {
     'post_engaged': 36,
     'post_impressions': 491,
     'post_story': 23,
     'comment_count': 6,
     'created_time': '03:02 AM, Sep 30, 2012',
     'message': 'Specialities of Shaktis and Pandavas. \n While having power, why there isn\\u2019t',
     < built - in function id > : '471662059541196',
     'status_type': 'status',
     'likes_count': 22
 } {
     'post_engaged': 24,
     'text': '30 Sept 2012 Avyakt Murlli ( Dual Voice )',
     'post_story': 8,
     'comment_count': 3,
     'link': 'http:\\/\\/www.youtube.com\\/watch?v=VGmFj8g7JFA&feature=youtube_gdata_player',
     'post_impressions': 307,
     'created_time': '03:04 AM, Sep 30, 2012',
     'message': 'Not available',
     < built - in function id > : '529439300404155',
     'status_type': 'video',
     'likes_count': 7
 } {
     'post_engaged': 37,
     'post_impressions': 447,
     'post_story': 22,
     'comment_count': 4,
     'created_time': '03:11 AM, Sep 30, 2012',
     'message': '30-09-12 \\u092a\\u094d\\u0930\\u093e\\u0924:\\u092e\\u0941\\u0930\\u0932\\u0940 \\u0913\\u0',
     < built - in function id > : '471643246209744',
     'status_type': 'status',
     'likes_count': 20
 } {
     'post_engaged': 36,
     'post_impressions': 423,
     'post_story': 22,
     'comment_count': 0,
     'created_time': '03:04 AM, Sep 29, 2012',
     'message': 'Essence: Sweet children, whenever you have time, earn the true income. Staying i',
     < built - in function id > : '471274672913268',
     'status_type': 'status',
     'likes_count': 20
 } {
     'post_engaged': 16,
     'text': 'Essence Of Murli 29-09-2012',
     'post_story': 5,
     'comment_count': 2,
     'link': 'http:\\/\\/www.youtube.com\\/watch?v=i6OgmbRsJpg&feature=youtube_gdata_player',
     'post_impressions': 291,
     'created_time': '03:04 AM, Sep 29, 2012',
     'message': 'Not available',
     < built - in function id > : '213046588825668',
     'status_type': 'video',
     'likes_count': 5
 }

但这让我想到了

TypeError : keys must be a string

错误可能是由于包含 keys 的 dict,例如:

 <built-in function id>: '213046588825668'

有人可以指导我如何从字典中删除这些元素吗?

最佳答案

你可以尝试像这样清理它:

for key in mydict.keys():
  if type(key) is not str:
    try:
      mydict[str(key)] = mydict[key]
    except:
      try:
        mydict[repr(key)] = mydict[key]
      except:
        pass
    del mydict[key]

这将尝试将任何不是字符串的键转换为字符串。任何无法转换为字符串或表示为字符串的键都将被删除。

关于python - Json 转储字典抛出 TypeError : keys must be a string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12734517/

相关文章:

PHP数组到Json树格式

Python simplejson.dumps 仍然返回字符串

python - Azure-blob-存储。使用 SAS token 访问容器

python - 如何指定在哪里放置 buildout bootstrap 生成的文件夹?

python - 类型错误 : object of type '_io.TextIOWrapper' has no len ()

python - pylab导入错误: No module named _thread

java - Android Studio 的 Retrofit2 : Cant get the array of petrol-stations

arrays - 使用 jq 向现有 JSON 数组添加新元素

java - JSON - 在 Java 中使用 JSONArray 解析文档

即使输入正确,Python JSON 模块也会出错