【问题标题】:write nested json in python在python中编写嵌套的json
【发布时间】:2017-02-01 15:28:36
【问题描述】:

我在尝试从我的服务器构建 JSON 响应时遇到问题。

我想获得一个 JSON 对象,其中包含我从 SQL 查询中获得的其他 JSON 对象,这样我就可以通过我的 websocket 服务器发送包含的 JSON

到目前为止,我尝试过这样的事情:

    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 对象了吗?

非常感谢!

【问题讨论】:

  • 制作嵌套对象和json.dumps()
  • 当前你有一个字符串列表(JSON 格式),你只需要将数据字典(作为字典,而不是 JSON)添加到 allData,然后在结束

标签: python sql arrays json


【解决方案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,我猜它会在每次迭代时被覆盖...

【讨论】:

    猜你喜欢
    • 2016-07-19
    • 1970-01-01
    • 2011-07-06
    • 2020-03-17
    • 2019-05-28
    • 1970-01-01
    • 1970-01-01
    • 2015-01-29
    • 1970-01-01
    相关资源
    最近更新 更多