【问题标题】:How do I serialize this into JSON?如何将其序列化为 JSON?
【发布时间】:2010-11-03 08:37:18
【问题描述】:
{
    "_id" : ObjectId("4ccb42cb8aad692e01000004"),
    "loc" : {
        "lat" : 37.799506,
        "long" : -122.459445
    },
    "test_set" : 1,
    "title" : "Melissa Mills Housewife 01 SIGNED",
    "num_comments" : 58,
    "down_votes" : 66,
    "up_votes" : 79,
    "image_url" : "http://farm2.static.flickr.com/1374/5126544615_79170591e5_m.jpg",
    "image_url_thumb" : "http://farm2.static.flickr.com/1374/5126544615_79170591e5_t.jpg",
    "date" : "Fri Oct 29 2010 21:55:23 GMT+0000 (UTC)",
    "flickr_id" : "5126544615"
}

列表中的一个元素在上面。

thejson = simplejson.dumps({"results":thelist})

但是,由于date 字段,我无法对其进行序列化。它不能序列化日期时间。

【问题讨论】:

  • 为什么不将日期字段转换为 unix 时间戳?
  • 在上面的代码中,日期是一个字符串。你不能只序列化一个字符串吗?
  • 根据上文,date 字段包含String,而不是datetime。不过,有点不清楚您要在这里完成什么。无论哪种方式,您都应该能够将 datetime 转换为 String 并序列化字典。
  • 请包含实际的错误信息。以及您正在使用的 Python 的实际版本。

标签: javascript python json datetime serialization


【解决方案1】:

我怀疑问题是否与日期时间有关:在您的字典中,根本没有日期时间对象,但“日期”键具有常规字符串值。

更可能的是,问题在于它无法序列化 ObjectId 类。要克服此限制,请创建一个继承自 JSONEncoder 的新类,并覆盖 default 方法。

【讨论】:

  • 这就是它所说的:异常类型:TypeError at / 异常值:datetime.datetime(2010, 10, 29, 23, 48, 22, 108000) 不是 JSON 可序列化的
  • 这很可能意味着您尝试编组的值不是您在原始消息中发布的值。
【解决方案2】:

除非我遗漏了什么——它是导致错误的ObjectId(没有它对我有用)。如果不需要,您可能需要考虑修改或删除该字段。 日期解析得很好。

【讨论】:

    【解决方案3】:

    这对我有用。我已经删除了 ObjectId,因为我没有上课。

    result = {
        "loc" : {
            "lat" : 37.799506,
            "long" : -122.459445
        },
        "test_set" : 1,
        "title" : "Melissa Mills Housewife 01 SIGNED",
        "num_comments" : 58,
        "down_votes" : 66,
        "up_votes" : 79,
        "image_url" : "http://farm2.static.flickr.com/1374/5126544615_79170591e5_m.jpg",
        "image_url_thumb" : "http://farm2.static.flickr.com/1374/5126544615_79170591e5_t.jpg",
        "date" : "Fri Oct 29 2010 21:55:23 GMT+0000 (UTC)",
        "flickr_id" : "5126544615"
    }
    
    import simplejson
    
    thejson = simplejson.dumps(result)
    
    print thejson
    

    输出:

    {"down_votes": 66, "loc": {"lat": 37.799506000000001, "long": -122.459445}, "image_url": "http://farm2.static.flickr.com/1374/5126544615_79170591e5_m.jpg", "test_set": 1, "title": "Melissa Mills Housewife 01 SIGNED", "up_votes": 79, "num_comments": 58, "image_url_thumb": "http://farm2.static.flickr.com/1374/5126544615_79170591e5_t.jpg", "date": "Fri Oct 29 2010 21:55:23 GMT+0000 (UTC)", "flickr_id": "5126544615"}
    

    如果您遇到以下错误,那么您需要有类 ObjectId :

        "_id" : ObjectId("4ccb42cb8aad692e01000004"),
    NameError: name 'ObjectId' is not defined
    

    【讨论】:

      猜你喜欢
      • 2013-08-20
      • 2022-01-18
      • 2021-10-02
      • 1970-01-01
      • 1970-01-01
      • 2016-05-23
      • 2018-09-08
      • 2017-02-28
      • 2011-11-30
      相关资源
      最近更新 更多