i am trying to convert a json object to a ruby object in a format that
is easy to work with. i use the json.decode and that converts it to
ruby as hashes and arrays like it should.
the part i am trying to figure out is a clean way to reorganize the
hashes (see my code below).
the first problem i have, is if any of the fields are missing from the
json object i get the “You have a nil object when you didn’t expect
it!” error.
the second issue is it is ugly and hard to read.
what is a good way to do this?
address = ActiveSupport::JSON.decode(address)
@address = {}
@address[‘status’] = address[‘Status’][‘code’]
@address[‘submitted_address’] = address[‘name’]
@address[‘full_address’] = address[‘Placemark’][0][‘address’]
@address[‘longitude’] = address[‘Placemark’][0][‘Point’][‘coordinates’]
[0]
@address[‘lattitude’] = address[‘Placemark’][0][‘Point’][‘coordinates’]
[1]
@address[‘elevation’] = address[‘Placemark’][0][‘Point’][‘coordinates’]
[2]
@address[‘accuracy’] = address[‘Placemark’][0][‘AddressDetails’]
[‘Accuracy’]
@address[‘country’] = address[‘Placemark’][0][‘AddressDetails’]
[‘Country’][‘CountryNameCode’]
@address[‘state’] = address[‘Placemark’][0][‘AddressDetails’]
[‘Country’][‘AdministrativeArea’][‘AdministrativeAreaName’]
@address[‘county’] = address[‘Placemark’][0][‘AddressDetails’]
[‘Country’][‘AdministrativeArea’][‘SubAdministrativeArea’]
[‘SubAdministrativeAreaName’]
@address[‘city’] = address[‘Placemark’][0][‘AddressDetails’][‘Country’]
[‘AdministrativeArea’][‘SubAdministrativeArea’][‘Locality’]
[‘LocalityName’]
@address[‘street’] = address[‘Placemark’][0][‘AddressDetails’]
[‘Country’][‘AdministrativeArea’][‘SubAdministrativeArea’][‘Locality’]
[‘Thoroughfare’][‘ThoroughfareName’]
@address[‘zip’] = address[‘Placemark’][0][‘AddressDetails’][‘Country’]
[‘AdministrativeArea’][‘SubAdministrativeArea’][‘Locality’]
[‘PostalCode’][‘PostalCodeNumber’]