2017-03-07 6 views
0
$json= 
"{ 
"name":"John", 
"name":"Karel" 
}"; 

Bei Verwendung dieses json_decode($json, true); i erhalten die array['name']="Karel" so nach Parse bekomme ich folgende xml:benutzerdefinierte PHP json Decoder

xml:

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
    <name value="Karel"/> 
</root> 

Ich brauche diese xml zu bekommen:

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
    <name> 
     <element>John</element> 
     <element>Karel</element> 
    </name> 
</root> 

ich denke, dass ich meine eigene json Parser benötigen, muss ich array['name']=["John","Karel"]; dann bekommen Ich kann es schaffen.

EDITS: Ich kann Eingabe Json nicht bearbeiten. Ich muss von Datei zu assoziativem Array dekodieren, bei gleichen Schlüsseln muss ich ein Array mit beiden Werten auf demselben Index erstellen.

ok ganz JSONfile ist dies:

{ 
    "name":"John", 
    "name":"Karel", 
    "heslo":{"content":"Dam ten shit podle sebe"}, 
    "ageA":30, 
    "d":21, 
    "d":42, 
    "ageB":30.2, 
    "ageC":1, 
    "ageD":0, 
    "testChar":["&","<",">","\"", "'", "-"], 
    "lada":{"pritelkyne":"Kristynka","plysak":"mimon", "vek":20, "oblibenýSeriál":"RobinsonůvOstrov"}, 
    "null":null, 
    "boolT":true, 
    "boolF":false, 
    "cars":[ { "type": "Skoda", "number": "212 555-1234" },"Ford", "BMW",{ "type": "Hyundai", "number": "215 555-1234" }, "Fiat" ], 
    "numbersSeven":[1,2,3,4,5,6,7], 
    "numbersFourteen":[1,2,3,4,5,6,7,8,9,10,11,12,13,14], 
    "numbersHundredOne":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101] 
} 

aber es ist nur eine von den vielen Beispielen, ich brauche dies für diesen json generrally nicht genau das zu tun.

Also wie soll ich das Parsing tun?

+1

es geht nicht um json_decode, müssen Sie Ihr Array neu Faktor. – hassan

+0

Wie sollte ich das Array umgestalten? –

+0

ich dont dünn das Refactoring-Array funktioniert Ich habe nicht die Werte in Array Ich verliere sie Ehn im Decodieren von JSON-Datei –

Antwort

2

Sie können nicht Verwenden Sie denselben Schlüssel für verschiedene Werte. Stattdessen können Sie Werte in einem Array speichern. Oder anders Array verwenden dann speichern Sie es in einem anderen Schlüssel:

Versuchen mit folgenden Codes:

$json : '{"names":[{"name":"John"},{ 
"name":"Karel"}] 
}'; 

ODER

$json = '{"name":["John","Karel"]}'; 

EDIT

Wie bearbeitet Frage Wenn Sie diese Eingabe empfangen und will json ändern, nachdem er es eingeschoben hat. Sie können versuchen, folgenden Code (Change JSON-Zeichenfolge)

$json= 
'{ 
"name":"John","name":"Karel" 
}'; 

$json = ltrim($json,"{"); 
$json= rtrim($json,"}"); 
$tmp_arr = (array_map('trim', explode(',', $json))); 
$new_arr['name']=array(); 
foreach ($tmp_arr as $key => $value) { 
    $val = explode(':', $value); 
    if(count($val)>1){ 
    $val=$val[1]; 
    $val = str_replace('"', '', $val); 
    $new_arr['name'][] = $val; 
    } 

} 

echo json_encode($new_arr); //{"name":["John","Karel"]} 
+0

Ich denke, dass das zweite Beispiel wird die gewünschte Ausgabe in der Frage – hassan

+0

ich kann nicht tun das muss ich beim Entschlüsseln tun. –

+0

Aber es wird niemals die gleichen Schlüssel ausführen. Es wird immer den letzten Wert nehmen Weil der letzte den vorherigen Wert ersetzen wird –

0

versuchen jsonarray zu verwenden: es würde aussehen [{ "name": "John"}, { "name": "Karel"}] so versuchen, diese

$arraysforjson = array(); 
$arraysforjson [] = array('name' => "$name") 
$json = json_encode($d); 
+0

Ich brauche dekodieren nicht codieren und ich brauche Schlüssel, der in meiner JSON-Datei ist habe ich nicht nur Namen als Schlüssel, dies ist nur geschnippt JSON –