2016-05-18 28 views
0
file= File.read('customers.json') 
data_hash= JSON.parse( file) 

# id=data_hash['customers'].map { |x| x['id'] } 
data_hash['customers']['user_id'].each do |user| 
     latitude=user['customers']['latitude'] 
     puts latitude 
    end 

Welchen Fehler ich gegenüberstehen? keine implizite Konvertierung von String in Integer (Typeerror)Fehler: JSON Parsing in Ruby

unten ist meine JSON-Datei

{ 
    "customers" :[ 
    {"latitude": "12.986375", "user_id": "12", "name": "Chris", "longitude": "77.043701"}, 
    {"latitude": "11.92893", "user_id": "1", "name": "Alice", "longitude": "78.27699"}, 
    {"latitude": "11.8856167", "user_id": "2", "name": "Ian", "longitude": "78.4240911"} 
    ] 
} 
+0

Können Sie zeigen uns Ihre 'data_hash'. Weil es ein verschachtelter Hash ist. Also müssen Sie es deutlich sehen –

+0

Könnten Sie zeigen, die 'customers.json' Datei hatte? Oder 'Datei'-Wert? – HashRocket

+0

hinzugefügt die JSON-Datei –

Antwort

2

Wenn Sie versuchen, latitude oder etwas, das Sie es mögen tun bekommen sollte:

file = File.read('customers.json') 
data_hash = JSON.parse(file) 

data_hash["customers"].each do |user| 
    latitude = user["latitude"] 
    puts latitude 
end 

OUTPUT:

12.986375 
11.92893 
11.8856167 
+0

@dv akhil, Willkommen. Bitte akzeptiere die Antwort. Vielen Dank! – HashRocket

0

Der no implicit conversion of String into Integer (TypeError) Fehler tritt auf, wenn Sie versuchen, ein Array als Hash zu behandeln. Da Arrays ganzzahlige Schlüssel für die Indizierung Rubin erwartet werden versuchen implizit zu werfen was auch immer zu [] auf eine ganze Zahl übergeben wird:

[]['a'] 
TypeError: no implicit conversion of String into Integer 

In Ihrem Fall ist es die data_hash['customers'] Knoten, der ein Array ist.

Sie können tatsächlich durchlaufen gerade durch jedes Element in data_hash[ Kunden ] Abbilden der Wert für die :latitude Schlüssel über map auf ein Array zurück.

puts data_hash["customers"].map { |h| h["latitude"] } 
+0

genau ich brauche Breite und Länge entsprechend jeder user_id –

+0

@dvakhil, warum haben Sie die Antwort hier und die richtige Antwort, die Sie haben, ist meine Antwort? – HashRocket

+0

@HashRocket Entschuldigung, ich bin neu zu stapeln. –