2013-03-08 105 views
0

将此显示为JSON的最佳方式是什么?Python列表,元组和字典到JSON?

{'foo': 'bar'} 
[1,2,3,4,5] 

我的部分解决方案:

import json 

def json_tuple(*args, **kwargs): 
    if args: 
     if kwargs: 
      return json.dumps(args), json.dumps(kwargs) 
     return json.dumps(args) 

    return json.dumps(kwargs) 

提供:

>>> json_tuple(1,2,3,4,5, **{'foo': 'bar'}) 
('[1, 2, 3, 4, 5]', '{"foo": "bar"}') 

将会把args列表中的kwargs - 例如:在args关键 - 是唯一的解决方案?

回答

4

如果你只是在寻找有效的JSON,你可以把这些值转换成一个顶级阵列:

import json 

def jsonify(*args, **kwargs): 
    return json.dumps((args, kwargs)) # Tuples are faster to create 

其中产率:

'[[1, 2, 3, 4, 5], {"foo": "bar"}]' 
+0

啊,这么简单。谢谢 :) – 2013-03-08 08:29:21

0

我的 “丑陋” 的解决方案:

import json 

def jsonify(*args, **kwargs): 
    if args: 
     kwargs.update({'args': args}) 

    return json.dumps(kwargs) 

提供:

>>> jsonify(1,2,3,4,5, **{'foo': 'bar'}) 
'{"foo": "bar", "args": [1, 2, 3, 4, 5]}' 
+0

如果有'arg' kwarg会失败。 – bereal 2013-03-08 08:30:03