如何在python上创建json对象?

时间:2016-05-23 10:47:17

标签: python json

我试图创建一个json对象,但我在某个地方犯了一个错误。我正在获取CSV文件的一些数据(中心是字符串,lat和lng是浮点数)。

我的代码:

data = []
data.append({
    'id': 'id',
    'is_city': false,
    'name': center,
    'county': center,
    'cluster': i,
    'cluster2': i,
    'avaible': true,
    'is_deleted': false,
    'coordinates': ('{%s,%s}' %(lat,lng))
})
json_data = json.dumps(data)
print json_data 

这与此相符:

[{
    "county": "County", 
    "is_city": false, 
    "is_deleted": false, 
    "name": "name", 
    "cluster": 99, 
    "cluster2": 99, 
    "id": "id", 
    "coordinates": "{41.0063945,28.9048234}", 
    "avaible": true
}]

这就是我想要的:

{ 
    "id" : "id",
    "is_city" : false,
    "name" : "name", 
    "county" : "county",
    "cluster" : 99,
    "cluster2" : 99,
    "coordinates" : [
        41.0870185, 
        29.0235126
    ], 
    "available" : true, 
    "isDeleted" : false, 
}

2 个答案:

答案 0 :(得分:0)

你可以使用pprint在python上进行漂亮的打印,但它应该应用于对象而不是字符串。 在您的情况下,json_data是一个表示JSON对象的字符串,因此您需要在尝试pprint时将其加载回对象(或者使用数据变量本身,因为它在您的示例中已包含此JSON对象)

例如尝试运行: pprint.pprint(json.loads(json_data))

答案 1 :(得分:0)

您将coordinates定义为指定格式的字符串。 json无法将其编码为列表;当你想要另一个时,你会说一件事。

同样,如果您不希望顶级词典成为列表中的唯一元素,请不要将其定义为列表中的元素。

data = {
    'id': 'id',
    'is_city': false,
    'name': name,
    'county': county,
    'cluster': i,
    'cluster2': i,
    'available': true,
    'is_deleted': false,
    'coordinates': [lat, lng]
}

我不知道您如何定义center,或者您希望它如何在基本相同的时间内获得值'name'和值'county'。我声明了两个新变量来保存这些值;您需要调整代码以处理此细节。我还修复了#34;可用"显然你希望Python以某种方式处理这个问题。