如何解决当多部分的一部分时,如何在 Django 中序列化字符串 geojson?
我正在发送一个 multipart
POST。发送的数据的一个字段是footprint,它是字符串geojson。我将其转换为字符串,因为它不能作为 dict
对象发送,这与将 POST 作为 json
发送时不同。
self.thumbnail = open('apps/data/thumb.png','rb')
self.footprint = """{"type": "Polygon","coordinates": [[[121.79168701171875,16.909683615558635],[122.12539672851561,17.19983423466054],[121.79168701171875,16.909683615558635]]]}"""
self.data = {
'thumbnail': self.thumbnail,'footprint': self.footprint,}
self.client.post('/data_management/capture_group_products/',data=self.data,format='multipart')
我在 Django 中使用 Field Serializer 来提取 geojson 并输入到 GeometryField。
class FootprintSerializer(serializers.Field):
def to_internal_value(self,data):
geom_data = data
#geom_data = json.dumps(geom_data)
print(geom_data,type(geom_data))
return GEOSGeometry(geom_data)
#footprint = FootprintSerializer(source='*')
当我将它输入到 GEOSGeometry 时,当数据为字符串时,出现错误:ValueError: too many values to unpack (expected 2)
{"type": "Polygon",16.909683615558635]]]} <class 'str'>
但是当我使用 json.dumps(geom_data)
时,我也会从 geojson 中得到反斜杠并得到错误:ValueError: String input unrecognized as WKT EWKT,and HEXEWKB.
反斜杠 geojson:
"{\"type\": \"Polygon\",\"coordinates\": [[[121.79168701171875,16.909683615558635]]]}" <class 'str'>
我也试过:geom_data = json.dumps(json.loads(geom_data))
,也没有奏效。有第一个错误。
解决方法
返回的对象必须指向该字段。
class FootprintSerializer(serializers.Field):
def to_internal_value(self,data):
return {"footprint": GEOSGeometry(data)}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。