2016-09-21 4 views
-1

Ich habe eine Zeichenfolge wie folgt aus meinen Daten.Json machen getrennt in Anführungszeichen

Categories { "0: Snack, 1:Juice, 2:Any "} 

Ich möchte es auf diese Weise statt, die Ausgabe

{"0: Snack", "1:Juice", "2:Any"} 

Wie kann ich das tun?

+0

Ich sehe keine JSON oder irgendein PHP - würden Sie bitte den Code teilen, mit dem Sie Probleme haben? –

+0

Die JSON Nein hier –

+2

Das ist kein JSON String, wie sieht es wirklich aus – RiggsFolly

Antwort

1

Beginnend mit Ihrer Nicht-JSON-String:

$your_string = '{ "0: Snack, 1:Juice, 2:Any "}'; 

die äußeren Klammern wegschneiden, Zitate und Raum, dann auf Komma explodieren:

$trimmed = trim($your_string, '{}" '); 
$split = explode(', ', $trimmed); 

Dies wird Ihnen ein Array erhalten wie diese :

array (size=3) 
    0 => string '0: Snack' (length=8) 
    1 => string '1:Juice' (length=7) 
    2 => string '2:Any' (length=5) 

Von diesem Punkt können Sie die nicht-JSON führen Sie wie folgt erhalten:

$result = '{"' . implode('", "', $split) . '"}'; 

Oder tatsächlich erhalten JSON wie folgt aus:

$resplit = array_map(function($x) { return explode(':', $x); }, $split); 
$indexed = array_column($resplit, 1, 0); 
$json = json_encode($indexed); 

Beachten Sie, dass da Sie Integer-Indizes haben, die Null-basierte und sequentiell sind, die JSON Sie mit am Ende wird ein Array sein ([" Snack","Juice","Any"]) eher als ein Objekt ({"0":" Snack","1":"Juice","2":"Any"}). Für andere Indizes erhalten Sie das Objektformular.

+0

Werde es versuchen, danke! – Dhenn

Verwandte Themen