开发者

How do I serialize this into JSON?

开发者 https://www.devze.com 2023-01-23 10:58 出处:网络
{ \"_id\" : ObjectId(\"4ccb42cb8aad692e01000004\"), \"loc\" : { \"lat\" : 37.799506, \"long\" : -122.459445
{
    "_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" : "htt开发者_高级运维p://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"
}

One of the elements in thelist is above.

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

However, I can't serialize this because of the date field. It can't serialize datetime.


I doubt that the problem has to do anything with datetime: in your dictionary, there is no datetime object at all, but the "date" key has a regular string value.

More likely, the problem is that it can't serialize the ObjectId class. To overcome this limitation, create a new class inheriting from JSONEncoder, and overriding the default method.


Unless i'm missing something - its the ObjectId that is causing the error (works for me here without it). You might want to consider munging or removing that field if not needed. The date parses fine.


This works for me. I have removed ObjectId as I do not have the class with me.

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

Output:

{"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"}

And if you are getting the following error, then you need to have class ObjectId :

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

精彩评论

暂无评论...
验证码 换一张
取 消