2016-07-13 23 views
0

Ich habe eine Javascript-Datei, die die Daten im folgenden Format enthält.Importieren von Daten aus JS-Datei mit JSON-Objekt in MySQL-Datenbank

index = { 
    "me" : { 
    "id" : "524bd089-2a7b-4a71-ba23-16354d6351ae", 
    "firstName" : "A=", 
    "lastName" : "T", 
    "pictureName" : "66s2c.jpg", 
    "username" : "a-t" 
    }, 
    "spaces" : [ { 
    "org" : { 
     "id" : "524bd089-2a7b-4a71-ba23-16354d6351ae", 
     "firstName" : "An", 
     "lastName" : "Tuli", 
     "pictureName" : "66s2c.jpg", 
     "username" : "arli" 
    } 
    }, { 
    "user" : { 
     "id" : "60c4a171-172f-4f66-9014-8b4cf3e476e6", 
     "firstName" : "Ban", 
     "lastName" : "Idris", 
     "pictureName" : "../../../../default-pic/butterfly_200.png", 
     "username" : "banun-idris" 
    } 
    } ] 
} 
users["524bd089-2a7b-4a71-ba23-16354d6351ae"] = { 
    "id" : "524bd089-2a7b-4a71-ba23-16354d6351ae", 
    "firstName" : "A", 
    "lastName" : "T", 
    "pictureName" : "66s2c.jpg", 
    "username" : "a", 
    "libraries" : [ "lEy27AZavfSR", "l0yApAoo2l4b", "lJl22YOtacxY", "l0UhMCvrMmka", "lJMWpIoFnaK4", "lCZ9cYYjVJcv", "l8kynpyoaej7" ] 
} 
libraries["lEy27AZavfSR"] = { 
    "id" : "lEy27AZavfSR", 
    "name" : "My Main Library", 
    "description" : null, 
    "numKeeps" : 0, 
    "keeps" : [ ] 
} 

keeps["k4r5UIugqgfk"] = { 
    "id" : "k4r5UIugqgfk", 
    "keptAt" : 1449613295000, 
    "lastActivityAt" : 1449613295000, 
    "title" : "", 
    "url" : "", 
    "note" : null, 
    "tags" : [ ], 
    "libraries" : [ "lJl22YOtacxY" ], 
    "summary" : "", 
    "messages" : [ ] 
} 

Ich muss Daten von diesem Formattyp in meine MySQL-Datenbank importieren.

Ich kann nicht abschließen und nageln den Ansatz nach unten, dies zu tun

Ich habe versucht, den Inhalt der Datei in eine PHP-Datei zu erhalten und sie dann in ein Array String konvertieren, aber ich bekomme ein Null-Ergebnis.

$jsondata = file_get_contents('trial_data.js'); 
$data = json_decode($jsondata, true); 
var_dump($data); 

Der zweite Ansatz denke ich, ich die Daten in Jquery-Datei laden nehmen und es mit AJAX zu einer PHP-Datei, die es in die Datenbank einfügt senden.

Welchen Ansatz sollten Sie nehmen und wie Sie vorgehen?

plus Ich brauche die ID aus der ersten Index-Matrix, um herauszufinden, so dass ich die ID aus dem mir bekommen und org Objekt, für das ich brauche, um den Rest der Informationen

+0

abhängig, wie viele Daten es gibt. Was angezeigt wird, kann manuell in json umgewandelt und von Ihrem PHP in ca. 2 Minuten gelesen werden. Wenn es viel gibt, würde es nicht lange dauern (Minuten nicht Stunden), um es in html Seite zu laden und es zu php zu ajaxieren – charlietfl

+0

Haben Sie das Array in Javascript mit JSON.stringify() kodiert? – Borna

+0

@charlietfl mein Problem ist nicht die Zeit, aber das Problem ist, die $ Daten in PHP gibt NULL zurück, muss ich einige Funktionen auf es in ein PHP-Array –

Antwort

1

zu erhalten, da Ihre Daten keine gültige JSON, können Sie einen regulären Ausdruck verwenden, um es zu analysieren, wie folgt aus:

$file_content = file_get_contents('trial_data.js'); 
preg_match_all("/(\w+)\[\"([^\]]*)\"\]\s*\=\s*\{([^\}]*)\}/", $file_content, $matches); 
foreach ($matches[1] as $key => $value) { 
    $data[$value][$matches[2][$key]] = json_decode('{'.$matches[3][$key].'}'); 
} 
print_r($data); 
//For example: 
echo $data['users']['524bd089-2a7b-4a71-ba23-16354d6351ae']->pictureName; 
//Output: 66s2c.jpg 

Demo:https://3v4l.org/fW5gH

+0

Ich habe meine Antwort aktualisiert, um mit den Schlüsseln umzugehen! –

+0

Ich habe ein anderes Problem, ich muss auch die Informationen für den erforderlichen Benutzer von der Spitze der Datei erhalten, es hat das folgende Format || index = { "me": { "id": "524bd089-2a7b-4a71-ba23-1635451ae", "vorName": "a", "nachName": "T", "Picturename": " 66s2c.jpg " "username": "ay" }, { "user": { "id": "60c4a171-172f-4f66-9014-8b4cf3e476e6" "firstname": "B" " lastName ":" I ", " Bildname ":" ", " Benutzername ":" bi " } }] } Ich brauche die ID aus dem mir Feld können Sie mir helfen, die Regex für die gleiche herauszufinden. –

+0

Könnten Sie es bitte zu Ihrer Frage hinzufügen –