相关疑难解决方法(0)

"正确"的JSON日期格式

我已经看到了许多不同的JSON日期格式标准:

"\"\\/Date(1335205592410)\\/\""         .NET JavaScriptSerializer
"\"\\/Date(1335205592410-0500)\\/\""    .NET DataContractJsonSerializer
"2012-04-23T18:25:43.511Z"              JavaScript built-in JSON object
"2012-04-21T18:25:43-05:00"             ISO 8601
Run Code Online (Sandbox Code Playgroud)

哪一个是正确的?还是最好的?这有什么标准吗?

javascript json

1071
推荐指数
9
解决办法
97万
查看次数

如何克服"datetime.datetime而不是JSON可序列化"?

我有一个基本的词典如下:

sample = {}
sample['title'] = "String"
sample['somedate'] = somedatetimehere
Run Code Online (Sandbox Code Playgroud)

当我尝试做的时候,jsonify(sample)我得到:

TypeError: datetime.datetime(2012, 8, 8, 21, 46, 24, 862000) is not JSON serializable

我能做些什么,以便我的字典样本可以克服上述错误?

注意:虽然它可能不相关,但字典是从mongodb中检索记录生成的,当我打印输出时str(sample['somedate']),输出是2012-08-08 21:46:24.862000.

python json

626
推荐指数
19
解决办法
44万
查看次数

Google App Engine模型的JSON序列化

我一直在寻找一段时间没有成功.我的项目没有使用Django,是否有一种简单的方法将App Engine模型(google.appengine.ext.db.Model)序列化为JSON,还是需要编写自己的序列化程序?

模型:

class Photo(db.Model):
    filename = db.StringProperty()
    title = db.StringProperty()
    description = db.StringProperty(multiline=True)
    date_taken = db.DateTimeProperty()
    date_uploaded = db.DateTimeProperty(auto_now_add=True)
    album = db.ReferenceProperty(Album, collection_name='photo')
Run Code Online (Sandbox Code Playgroud)

python google-app-engine json

86
推荐指数
4
解决办法
3万
查看次数

Python:找出当地时区

我想将日志文件中的UTC时间戳与本地时间戳进行比较.在创建本地datetime对象时,我使用如下内容:

>>> local_time=datetime.datetime(2010, 4, 27, 12, 0, 0, 0, 
                                 tzinfo=pytz.timezone('Israel'))
Run Code Online (Sandbox Code Playgroud)

我想找到一个自动工具来取代tzinfo=pytz.timezone('Israel')当前的本地时区.

有任何想法吗?

python time timezone datetime utc

55
推荐指数
9
解决办法
8万
查看次数

为什么python中的日期时间对象的json序列化不能用于日期时间对象的开箱即用

为什么json序列化不适用于datetime对象.据我了解json序列化,任何对象的基本思想都可以调用 __str__内置函数,然后将你获得的对象作为响应进行urlencode.但是在datetime的情况下,我得到以下错误

TypeError: datetime.datetime(2012, 5, 23, 18, 38, 23, 37566) is not JSON serializable
Run Code Online (Sandbox Code Playgroud)

虽然有__str__一种方法可以对已经可用的物体进行字符串化,但似乎有意识地决定不这样做,为什么会出现这种情况呢?

python serialization json simplejson

52
推荐指数
3
解决办法
3万
查看次数

将对象从Django传递到Javascript DOM

我正在尝试将一个来自Django的查询集传递给一个带有javascript的模板.

我尝试过不同的方法来解决这个问题:

1.正常方法 - 由于命名法,Javascript会因为尝试解析对象而搞得一团糟[> Object:ID<> Object:ID< ...]

Django View

django_list = list(Some_Object.objects.all())
Run Code Online (Sandbox Code Playgroud)

模板HTML + JS

<script type="text/javascript" >
    var js_list = {{django_list}};
</script>
Run Code Online (Sandbox Code Playgroud)

2. JSON方法 - Django无法将对象列表转换为json字符串,而不是JSON可序列化的

Django View

django_list = list(Some_Object.objects.all())
json_list = simplejson.dumps(django_list)
Run Code Online (Sandbox Code Playgroud)

模板HTML + JS

<script type="text/javascript" >
    var js_list = {{json_list}};
</script>
Run Code Online (Sandbox Code Playgroud)

所以,我需要一些帮助:)

有人有任何建议/解决方案吗?

谢谢!

javascript python django json dom

37
推荐指数
6
解决办法
5万
查看次数

在JSON中编码嵌套的python对象

我想用JSON编码对象.但是,我无法弄清楚如何在没有字符串转义的情况下进行输出.

import json

class Abc:
    def __init__(self):
        self.name="abc name"
    def toJSON(self):
        return json.dumps(self.__dict__, cls=ComplexEncoder)

class Doc:
    def __init__(self):
        self.abc=Abc()
    def toJSON(self):
        return json.dumps(self.__dict__, cls=ComplexEncoder)

class ComplexEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, Abc) or isinstance(obj, Doc):
            return obj.toJSON()
        else:
            return json.JSONEncoder.default(self, obj)

doc=Doc()
print doc.toJSON()
Run Code Online (Sandbox Code Playgroud)

结果是(转储返回一个字符串表示,这就是"被转义"的原因)

{"abc": "{\"name\": \"abc name\"}"}
Run Code Online (Sandbox Code Playgroud)

我想要一些不同的东西.预期的结果是

{"abc": {"name": "abc name"}"}
Run Code Online (Sandbox Code Playgroud)

但我不知道如何...任何提示?

提前致谢.

python json encode

34
推荐指数
4
解决办法
4万
查看次数

Python JSON编码器支持datetime?

是否有任何优雅的方式使Python JSON编码器支持日期时间?一些第三方模块或简单的黑客?

我正在使用龙卷风的数据库包装器从db中获取一些原始数据以生成json.查询结果包括常规MySQL时间戳列.

Python的默认json编码器不支持自己的日期时间类型,这是非常烦人的,这在所有类型的数据库查询中都很常见.

我不想修改Python自己的json编码器.任何好的做法?非常感谢!

ps:我通过修改Python JSON编码器默认方法找到了一个脏黑客:

更改:

def default(self, o):
    raise TypeError(repr(o) + " is not JSON serializable")
Run Code Online (Sandbox Code Playgroud)

至:

def default(self, o):
    from datetime import date
    from datetime import datetime
    if isinstance(o, datetime):
        return o.isoformat()
    elif isinstance(o, date):
        return o.isoformat()
    else:
        raise TypeError(repr(o) + " is not JSON serializable")
Run Code Online (Sandbox Code Playgroud)

好吧,它只是开发环境的临时解决方案.

但是对于长期解决方案或生产环境,这非常难看,每次部署到新服务器时我都必须进行修改.

有没有更好的办法?我不想修改Python代码本身,也不想修改Tornado源代码.我能用自己的项目代码做些什么来实现这一目标吗?最好是一步到位.

非常感谢!

python mysql json tornado ios5

22
推荐指数
4
解决办法
2万
查看次数

通过zmq ipc发送现有的dict

我正在尝试通过zmq ipc socket发送一个现有的dict,我可以用这段代码发送一个字符串,但我不能发送一个dict对象

import zmq, datetime

d = {0: ('356612022462768', 'EVENT', 0, '2012-12-26 15:50:16', -20.22216, -70.13723, 6.44, 134.0, 1, 2, '18743230', datetime.datetime(2013, 2, 10, 9, 6, 2, 362734))}

if __name__ == "__main__":
    context = zmq.Context()
    publisher = context.socket(zmq.PUB)
    publisher.connect("ipc://shared")
    while True:
        publisher.send( d )
        time.sleep( 1 )
Run Code Online (Sandbox Code Playgroud)
TypeError: {0: ('356612022462768', 'EVENT', 0, '2012-12-26 15:50:16', 
           -20.22216, -70.13723, 6.44, 134.0, 1, 2, '18743230', 
           datetime.datetime(2013, 2, 10, 9, 6, 2, 362734))} 
does not provide a buffer interface.
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

python zeromq

8
推荐指数
2
解决办法
4756
查看次数

更多pythonic方法从元组列表格式化JSON字符串

目前我这样做:

def getJSONString(lst):
    join = ""
    rs = "{"
    for i in lst:
        rs += join + '"' + str(i[0]) + '":"' + str(i[1]) + '"'
        join = ","
    return rs + "}"
Run Code Online (Sandbox Code Playgroud)

我称之为:

rs = getJSONString([("name", "value"), ("name2", "value2")])
Run Code Online (Sandbox Code Playgroud)

它不需要嵌套(它只是一个简单的名称值对列表).但我愿意以不同的方式调用函数.这一切看起来有点笨拙,有更优雅的方式吗?这需要在2.x下运行.

请注意,这不是重复:Python - 将元组列表转换为字符串(除非可以修改该答案以创建JSON字符串作为输出).

编辑:将名称值对作为字典传递会更好吗?

python json tuples list

6
推荐指数
1
解决办法
1万
查看次数