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]
# ]
# }
希望对您有所帮助。
我一直在 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]
# ]
# }
希望对您有所帮助。