ruby 和 google 映射输出中 json 数组结构的差异

Difference in json array structure in ruby and google maps output

我一直在 SO 上搜索关于 json 数组输出差异的信息,但没有得到任何对我的用例有用的结果。这是我的问题,我一直在使用 Google 地图来显示形状,然后将所选部分显示到另一个地图中。

Google地图显示所选部分的输出-

[{"type":"RECTANGLE","id":null,"geometry":[[32.33733004161649,50.90904235665221],[32.377641904110355,50.989036558312364]]}]

我在使用 to_json 方法时收到的输出 -

"[{\"id\":null,\"type\":\"RECTANGLE\",\"radius\":\"3513.3954239013615\",\"geometry\":\"[32.39126846779702, 50.91075897042174]\"}]" 

我如何或可以做什么,使两种方法的输出相同,以便我可以按预期的格式显示数据。 json 在 rails 中编码和解码的新手,非常感谢任何帮助。

更新 1 - 省略 to_json 调用后

[{"id"=>nil, "type"=>"CIRCLE", "radius"=>"3513.3954239013615", "geometry"=>"[32.39126846779702, 50.91075897042174]"}]

仍然,google 地图无法理解“=>”

假设您在 ruby 中有以下哈希数组:

a = [{
  "id"=>nil, 
  "type"=>"CIRCLE", 
  "radius"=>"3513.3954239013615", 
  "geometry"=>"[32.39126846779702, 50.91075897042174]"
}]

您现在需要使 google 地图易于理解。我们开始吧:

result = a.map { |e| # will convert geometry to what G expects
  ll = JSON.parse e["geometry"]
  e["geometry"] = [ll]  # passing just a single variable
  # you are likely to calc those basing on your radius value
  e
}.map(&:to_json)

现在不要被 ruby p 的输出混淆,它显示转义字符串。为确保一切顺利:

result.each { |e| puts e }
#⇒ {
#   "id":null,
#   "type":"CIRCLE",
#   "radius":"3513.3954239013615",
#   "geometry":[
#       [32.39126846779702,50.91075897042174],
#       [32.39126846779702,50.91075897042174]
#   ]
# }

希望对您有所帮助。