2017-02-01 6 views
0

У меня возникла проблема при попытке создать ответ JSON с моего сервера.write inested json in python

Я хочу, чтобы получить объект JSON, который содержит другие объекты JSON, которые я получаю в результате из SQL запроса, так что я мог бы послать содержащий JSON через мой WebSocket сервер

До сих пор я пытался что-то вроде этого :

def screenColor(self,ne_Lat, ne_Lng, sw_lat, sw_Lng): 
    data={} 
    allData=[] 
    for rec in self.c.execute('''SELECT * FROM squares WHERE ((lat BETWEEN ? AND ?) AND (long BETWEEN ? AND ?)) ''',(sw_lat, ne_Lat, sw_Lng, ne_Lng)): 
      data['color']=rec[3] 
      data['lat']=rec[1] 
      data['lng']=rec[2] 
      json_data=json.dumps(data) 
      allData.append(json_data) 
    return allData 

и при печати возвращаемого значения я получаю:

['{"color": 85, "lat": 31.776879500000156, "lng": 35.21187200000153}', '{"color": 85, "lat": 31.778179500000157, "lng": 35.21187200000153}', '{"color": 85, "lat": 31.779479500000157, "lng": 35.21187200000153}', '{"color": 85, "lat": 31.780779500000158, "lng": 35.21187200000153}', '{"color": 85, "lat": 31.782079500000158, "lng": 35.21187200000153}', '{"color": 85, "lat": 31.78337950000016, "lng": 35.21187200000153}', '{"color": 26, "lat": 31.78467950000016, "lng": 35.21187200000153}', '{"color": 28, "lat": 31.78597950000016, "lng": 35.21187200000153}', '{"color": 85, "lat": 31.78727950000016, "lng": 35.21187200000153}', '{"color": 85, "lat": 31.776879500000156, "lng": 35.21367200000153}', '{"color": 28, "lat": 31.778179500000157, "lng": 35.21367200000153}', '{"color": 85, "lat": 31.779479500000157, "lng": 35.21367200000153}', '{"color": 26, "lat": 31.780779500000158, "lng": 35.21367200000153}', '{"color": 26, "lat": 31.782079500000158, "lng": 35.21367200000153}', '{"color": 26, "lat": 31.78337950000016, "lng": 35.21367200000153}', '{"color": 85, "lat": 31.78467950000016, "lng": 35.21367200000153} 

есть ли способ, чтобы получить этот массив как объект JSON? Это уже объект JSON?

спасибо!

+0

грим вложенного объекта и JSON. dumps() – taesu

+0

В настоящее время у вас есть список строк (в формате JSON), вам просто нужно добавить данные dicts (как dicts, а не JSON) в allData, а затем выполнить json.dumps (allData) в конце –

ответ

1

Вы должны попробовать следующее:

def screenColor(self,ne_Lat, ne_Lng, sw_lat, sw_Lng): 

    allData=[] 
    for rec in self.c.execute('''SELECT * FROM squares WHERE ((lat BETWEEN ? AND ?) AND (long BETWEEN ? AND ?)) ''',(sw_lat, ne_Lat, sw_Lng, ne_Lng)): 
      data = {} 
      data['color']=rec[3] 
      data['lat']=rec[1] 
      data['lng']=rec[2] 

      allData.append(data) 
    return json.dumps(allData) 

В противном случае, если вы определяете словарь data вне цикла, то он будет перезаписан при каждой итерации я думаю ...