2016-10-19 7 views
-3

Ich habe ein paar JSON-Eingänge wie folgt.Nasty geschachtelte JSON zu Datenrahmen in R

Input1:

{"booking":{"id":"54092","createdOn":"2016-10-06T06:29:00.0000000+0000","bookingDateTime":"2016-10-08T06:45:00.0000000+0000","checkInDateTime":null,"checkOutDateTime":null,"tableNumbers":null,"pax":3,"type":"calling","status":"booked","source":"concierge","specialInstruction":"test hoppi","outlet":{"id":"46a97c2e-c921-4339-819c-50e17f25d09a","name":"Hoppipolla"},"customer":{"name":"Hoppi","email":"[email protected]","countryCallingCode":"91","phone":"89"}},"eventType":"booked","serverDateTime":"2016-10-06T06:28:25.0000558+0000"} 

{"booking":{"id":"54093","createdOn":"2016-10-06T06:30:00.0000000+0000","bookingDateTime":"2016-10-08T06:46:00.0000000+0000","checkInDateTime":null,"checkOutDateTime":null,"tableNumbers":null,"pax":3,"type":"calling","status":"booked","source":"concierge","specialInstruction":"test hoppi","outlet":{"id":"46a97c2e-c922-4339-819c-50e17f25d09a","name":"Hoppipolla"},"customer":{"name":"Ravi","email":"[email protected]","countryCallingCode":"91","phone":"89"}},"eventType":"booked","serverDateTime":"2016-10-06T06:28:25.0000558+0000"} 

Input2:

{"feedback":{"dateTime":"2016-10-06T09:24:05.0000730+0000","customerName":"mytestdevcog","averageRating":4,"isNegativeByComments":false,"outlet":{"id":"f9e9c21f-2e52-462e-a1f2-012dab216d27","name":"cholan 's Darbar"},"customer":{"name":"mytestdevcog","email":"[email protected]","countryCallingCode":"91","phone":"7895478745"},"responses":[{"question":"Was your waiting time too long?","response":"No","questionType":"yes_no"},{"question":"Service","response":"3","questionType":"rating"},{"question":"desserts","response":"4","questionType":"rating"},{"question":"Comments","response":"good","questionType":"short_answer"},{"question":"How likely is it that you would recommend us to a friend or colleague?","response":"5","questionType":"nps"},{"question":"Portion Size","response":"5","questionType":"rating"},{"question":"Indian Food","response":"4","questionType":"rating"},{"question":"Desert spread","response":"4","questionType":"rating"}]},"serverDateTime":"2016-10-06T09:24:27.0000644+0000"} 

{"feedback":{"dateTime":"2016-10-06T09:24:05.0000730+0000","customerName":"mytestdevcog","averageRating":4,"isNegativeByComments":false,"outlet":{"id":"f9e9c21f-2e52-462e-a1f2-012dab216d27","name":"cholan 's Darbar"},"customer":{"name":"mytestdevcog","email":"[email protected]","countryCallingCode":"91","phone":"7895478745"},"responses":[{"question":"Was your waiting time too long?","response":"No","questionType":"yes_no"},{"question":"Service","response":"3","questionType":"rating"},{"question":"desserts","response":"4","questionType":"rating"},{"question":"Comments","response":"good","questionType":"short_answer"},{"question":"How likely is it that you would recommend us to a friend or colleague?","response":"5","questionType":"nps"},{"question":"Portion Size","response":"5","questionType":"rating"},{"question":"Indian Food","response":"4","questionType":"rating"},{"question":"Desert spread","response":"4","questionType":"rating"}]},"serverDateTime":"2016-10-06T09:24:27.0000644+0000"} 

Würden zwei separate Datenrahmen für zwei Eingänge benötigen. Wie kann dies in R erreicht werden?

+0

Bearbeiten Sie Ihre json Eingangsdaten zuerst . Es sieht seltsam aus. –

+0

'jsonlite :: fromJSON (input1)'. Sie müssen jedoch Ihre Eingaben als JSON gültig machen. Und Sie könnten besser direkt aus der Quelle lesen in R – SymbolixAU

+0

Ihr JSON hat PII demaskiert. – tchakravarty

Antwort

0

Wie in den Kommentaren richtig angegeben, enthält Ihr json einen Fehler. Die dritte und vierte Saite enthalten tatsächlich "cholan's darbar", die entschlüsselt werden müssen, bevor Sie sie als json analysieren können.

Für Ihre Frage (über das Erhalten der zwei Datensätze) korrigierte ich direkt die Zeichenkette. Hier ist, wie es getan werden könnte:

library(jsonlite) 

s1 <- '{"booking":{"id":"54092","createdOn":"2016-10-06T06:29:00.0000000+0000","bookingDateTime":"2016-10-08T06:45:00.0000000+0000","checkInDateTime":null,"checkOutDateTime":null,"tableNumbers":null,"pax":3,"type":"calling","status":"booked","source":"concierge","specialInstruction":"test hoppi","outlet":{"id":"46a97c2e-c921-4339-819c-50e17f25d09a","name":"Hoppipolla"},"customer":{"name":"Hoppi","email":"[email protected]","countryCallingCode":"91","phone":"89"}},"eventType":"booked","serverDateTime":"2016-10-06T06:28:25.0000558+0000"}' 

s2 <- '{"booking":{"id":"54093","createdOn":"2016-10-06T06:30:00.0000000+0000","bookingDateTime":"2016-10-08T06:46:00.0000000+0000","checkInDateTime":null,"checkOutDateTime":null,"tableNumbers":null,"pax":3,"type":"calling","status":"booked","source":"concierge","specialInstruction":"test hoppi","outlet":{"id":"46a97c2e-c922-4339-819c-50e17f25d09a","name":"Hoppipolla"},"customer":{"name":"Ravi","email":"[email protected]","countryCallingCode":"91","phone":"89"}},"eventType":"booked","serverDateTime":"2016-10-06T06:28:25.0000558+0000"}' 

in den folgenden zwei Saiten, die ich manuell "cholan des Darbar" korrigiert "cholan \ 's Darbar"

s3 <- '{"feedback":{"dateTime":"2016-10-06T09:24:05.0000730+0000","customerName":"mytestdevcog","averageRating":4,"isNegativeByComments":false,"outlet":{"id":"f9e9c21f-2e52-462e-a1f2-012dab216d27","name":"cholan \'s Darbar"},"customer":{"name":"mytestdevcog","email":"my[email protected]","countryCallingCode":"91","phone":"7895478745"},"responses":[{"question":"Was your waiting time too long?","response":"No","questionType":"yes_no"},{"question":"Service","response":"3","questionType":"rating"},{"question":"desserts","response":"4","questionType":"rating"},{"question":"Comments","response":"good","questionType":"short_answer"},{"question":"How likely is it that you would recommend us to a friend or colleague?","response":"5","questionType":"nps"},{"question":"Portion Size","response":"5","questionType":"rating"},{"question":"Indian Food","response":"4","questionType":"rating"},{"question":"Desert spread","response":"4","questionType":"rating"}]},"serverDateTime":"2016-10-06T09:24:27.0000644+0000"}' 

s4 <- '{"feedback":{"dateTime":"2016-10-06T09:24:05.0000730+0000","customerName":"mytestdevcog","averageRating":4,"isNegativeByComments":false,"outlet":{"id":"f9e9c21f-2e52-462e-a1f2-012dab216d27","name":"cholan \'s Darbar"},"customer":{"name":"mytestdevcog","email":"[email protected]","countryCallingCode":"91","phone":"7895478745"},"responses":[{"question":"Was your waiting time too long?","response":"No","questionType":"yes_no"},{"question":"Service","response":"3","questionType":"rating"},{"question":"desserts","response":"4","questionType":"rating"},{"question":"Comments","response":"good","questionType":"short_answer"},{"question":"How likely is it that you would recommend us to a friend or colleague?","response":"5","questionType":"nps"},{"question":"Portion Size","response":"5","questionType":"rating"},{"question":"Indian Food","response":"4","questionType":"rating"},{"question":"Desert spread","response":"4","questionType":"rating"}]},"serverDateTime":"2016-10-06T09:24:27.0000644+0000"}' 


j1 <- fromJSON(s1) 
j2 <- fromJSON(s2) 
j3 <- fromJSON(s3) 
j4 <- fromJSON(s4) 

rbind(j1, j2) 

rbind(j3, j4)