Sen to_gmaps4rails
tarafından döndürülen JSON formatlı dizeleri bitiştirmek olamaz.
ben göndermek istiyorum bazı nesneleri varsa:
loc1 = {"longitude" => "2.13012", "latitude" => "48.8014"}
loc2 = {"longitude" => "-90.556", "latitude" => "41.0634"}
Ve to_gmaps4rails
gibi JSON çevirebiliriz yapar:
loc1_json = loc1.to_json
=> "{\"longitude\":\"2.13012\",\"latitude\":\"48.8014\"}"
loc2_json = loc2.to_json
=> "{\"longitude\":\"-90.556\",\"latitude\":\"41.0634\"}"
Bunlar dizeleri olarak iki JSON kodlanmış nesneleri konum.
Concatenate çıkan dizeleri:
loc1_json + loc2_json
=> "{\"longitude\":\"2.13012\",\"latitude\":\"48.8014\"}{\"longitude\":\"-90.556\",\"latitude\":\"41.0634\"}"
Ve bir JSON dekoderi ile başka bir uygulamaya göndermek, ben alırsınız:
JSON[loc1_json + loc2_json]
JSON::ParserError: 743: unexpected token at '{"longitude":"-90.556","latitude":"41.0634"}'
ayrıştırıcı sadece kendinden önceki partway dize aracılığıyla yapar Kapanış sınırlayıcı bulur ve bir hata olduğunu bilir.
Bunları bir diziye veya karma haline getirebilir ve daha sonra JSON'a yeniden kodlayabilirim, ancak bu, JSON dizelerinin her biri iki kez kodlanmış olacağından ve geri dönmek için iki kez deşifre edilmesi gerektiğinden yardımcı olmaz orijinal veriler: iki kez sihirli JSON dekoder-halkasını kullanmak için istemci tarafında bazı korkak JavaScript gerektirmeyen diye,
JSON[([loc1_json, loc2_json]).to_json]
=> ["{\"longitude\":\"2.13012\",\"latitude\":\"48.8014\"}",
"{\"longitude\":\"-90.556\",\"latitude\":\"41.0634\"}"]
JSON[([loc1_json, loc2_json]).to_json].map{ |s| JSON[s] }
=> [{"longitude"=>"2.13012", "latitude"=>"48.8014"},
{"longitude"=>"-90.556", "latitude"=>"41.0634"}]
Bu JSON dekoder beklediği bir durum değil.Şimdi
array_of_json = [loc1_json, loc2_json].map{ |s| JSON[s] }.to_json
=> "[{\"longitude\":\"2.13012\",\"latitude\":\"48.8014\"},{\"longitude\":\"-90.556\",\"latitude\":\"41.0634\"}]"
değerleri doğru kodlanır ve şunlar olabilir:
gerçek çözelti, ardından dizi veya karma içine yeniden kodlamak nesneleri geri doğal Ruby bunları deşifre etmek, daha sonra göndermek Daha sonra değil yukarıdaki gibi dizelerden oluşan bir dizi olarak, ortaya çıkan verilerin mantıklı olabilir hedef tarayıcı veya app, gönderilen, ancak veri sağlamalarının bir dizi olarak:
JSON[array_of_json]
=> [{"longitude"=>"2.13012", "latitude"=>"48.8014"},
{"longitude"=>"-90.556", "latitude"=>"41.0634"}]
loc1 == JSON[array_of_json][0]
=> true
loc2 == JSON[array_of_json][1]
=> true
kodunuzu o uygulamak, burada Ne yapılması gerekiyor:
Bu, konumları "JSON öncesi" durumuna geri çözer, diziye ekler, ardından diziyi JSON biçiminde döndürür.
Diziler ister miydiniz? Aksi takdirde, virgül veya çevreleyen yapıya sahip olmayan bir sıradaki json nesneleri olur. –