将包含大量值对的字典转换/序列化为python中的json文件

将包含大量值对的字典转换/序列化为python中的json文件,python,json,xml,simplejson,pyshp,Python,Json,Xml,Simplejson,Pyshp,目前,我尝试使用Json包将ESRI shapefile(.shp)中的数据转换为Json文件 在此过程中,我想转换包含许多不同点坐标的词汇表: json.dumps({"Points" : coordinates}) 列表“坐标”如下所示: [[-2244.677490234375, -3717.6876220703125], [-2252.7623006509266, -3717.321774721159], ..., [-2244.677490234375, -3717.687622

目前,我尝试使用Json包将ESRI shapefile(.shp)中的数据转换为Json文件

在此过程中,我想转换包含许多不同点坐标的词汇表:

json.dumps({"Points" : coordinates}) 
列表“坐标”如下所示:

[[-2244.677490234375, -3717.6876220703125], [-2252.7623006509266, -3717.321774721159], 
..., [-2244.677490234375, -3717.6876220703125]]
它包含大约几百个坐标对

但是,当我尝试执行json.dumps时,会出现以下错误:

[-2244.677490234375, -3717.6876220703125] is not JSON serializable
我的第一个想法是,它不能处理十进制/浮点值,但如果我执行以下仅包含两个坐标对的工作示例:

print(json.dumps({"Points" :  [[-2244.677490234375, -3717.6876220703125],
[-2244.677490234375, -3717.6876220703125]]}))
tt工作,我没有得到一个错误。。。这种情况下的输出为:

{"Points": [[-2244.677490234375, -3717.6876220703125], [-2244.677490234375, -3717.6876220703125]]}

我不明白为什么它不能与我的“坐标”列表一起工作。

您看到的错误通常发生在自定义类中。所以我相信你的问题与pyshp提供坐标值的方式有关。如果没有看到您的代码,我不能确定,但是查看我发现在一些地方使用的pyshp源代码

class _Array(array.array):
  """Converts python tuples to lits of the appropritate type.
  Used to unpack different shapefile header parts."""
  def __repr__(self):
    return str(self.tolist())
__repr________________________________________。我编写了一个示例,演示了向json.dumps()提供pyshp的_数组类时出现的异常

要解决此问题,应将coordinates.tolist()传递给dumps调用

json.dumps({"Points" : coordinates.tolist()}) 

您看到的错误通常发生在自定义类中。所以我相信你的问题与pyshp提供坐标值的方式有关。如果没有看到您的代码,我不能确定,但是查看我发现在一些地方使用的pyshp源代码

class _Array(array.array):
  """Converts python tuples to lits of the appropritate type.
  Used to unpack different shapefile header parts."""
  def __repr__(self):
    return str(self.tolist())
__repr________________________________________。我编写了一个示例,演示了向json.dumps()提供pyshp的_数组类时出现的异常

要解决此问题,应将coordinates.tolist()传递给dumps调用

json.dumps({"Points" : coordinates.tolist()}) 

非常感谢你!!现在它正在工作,但我仍然不完全理解前面的问题。。。我的坐标实际上是列表。。因此,当我尝试应用.tolist()时,出现了一个错误,表示列表没有方法tolist()。因此,我将列表转换为numpy数组,然后使用.tolist()将其转换回列表。。。奇怪的是,现在它开始工作了:-太棒了。物体肯定有问题。。。我想我们永远不会知道:)顺便说一句,我想你们有一个numpy数组的列表,但不是100%确定。也请记住把我的答案记下来。非常感谢!!现在它正在工作,但我仍然不完全理解前面的问题。。。我的坐标实际上是列表。。因此,当我尝试应用.tolist()时,出现了一个错误,表示列表没有方法tolist()。因此,我将列表转换为numpy数组,然后使用.tolist()将其转换回列表。。。奇怪的是,现在它开始工作了:-太棒了。物体肯定有问题。。。我想我们永远不会知道:)顺便说一句,我想你们有一个numpy数组的列表,但不是100%确定。也请记住把我的作为答案。