gpt4 book ai didi

python - 如何序列化 ndb.GeoPt 以获取 JSON 响应以满足我在 Python/Google App Engine 中的需求

转载 作者:行者123 更新时间:2023-11-30 23:13:26 25 4
gpt4 key购买 nike

这将是一个由两部分组成的问题,

在这里,我将 GeoPt 发送到我的 ndb 服务。 JSON 如下所示。

{
"DriverId": 1,
"Startpoint": {
"longitude": 46.764084,
"latitude": -71.351396
},
"Endpoint": {
"longitude": 46.764084,
"latitude": -71.351396
},
"Regular": false,
"DateAndTime": "28/03/2015",
"PlacesAvailable": 3,
"ValLift": 3
}

我使用此函数来序列化我的日期时间

def serialiser__json(objet):

if isinstance(objet, datetime.datetime):
return objet.replace(microsecond=0).isoformat()
elif isinstance(objet, datetime.date):
return objet.isoformat()
else:
return objet

现在我想知道如何将我的 GeoPt 序列化为 JSON 并返回它以使其看起来与发送时相同,例如这里是我的路线模型。

class Route(ndb.Model):

driver_id = ndb.IntegerProperty()
requester_id = ndb.IntegerProperty()
startpoint = ndb.GeoPtProperty(required=True)
endpoint = ndb.GeoPtProperty(required=True)
regular = ndb.BooleanProperty(required=True)
date_and_time = ndb.DateTimeProperty(required=True)
places_available = ndb.IntegerProperty()
val_lift = ndb.IntegerProperty()

这是我在 POST 定义中添加长纬度的方法

newroute.startpoint = ndb.GeoPt(route_json['Startpoint']['longitude'],route_json['Startpoint']['latitude'])

newroute.endpoint = ndb.GeoPt(route_json['Endpoint']['longitude'],route_json['Endpoint']['latitude'])

所以第一部分,

如何序列化模型中存储的 GeoPt?

第二部分

如何使其看起来与发送时相同(返回 StartPoint,其中包含经度和纬度“成员”)?

提前致谢。

最佳答案

您刚刚发布的更改作为对您独特命名的 serialiser__json 正文的 self 回答(在标识符中使用两个相邻下划线很奇怪,尽管合法)为您提供了正确的 JSON 功能,但 < strong>不满足您对“第二部分”非常严格的要求:

How to make it look the same way it was sent

这有几个问题:(A),键的顺序(当您使用 dict 时,它是任意的,这可能会导致生成的 JSON 字符串的“外观”完全不同,尽管具有相同的语义); (B)、空白(传入的 JSON 字符串显然有各种美化空白,包括换行符和用于缩进的空格);以及 (C),float 格式中的有效位数可能存在小问题。

(A) 可以通过按照您希望的键顺序构建一个 collections.OrderedDict 来修复 - 该有序字典的 json.dumps 将尊重按键的顺序。 (B) 和 (C) 更微妙,需要更多的“美化”工作 - 您的输出中真的需要这样的修饰吗...?

(顺便说一下,所有这些问题都与 App Engine 上的问题无关)。

关于python - 如何序列化 ndb.GeoPt 以获取 JSON 响应以满足我在 Python/Google App Engine 中的需求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29331565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com