json_encode: Ausgabe Array/Objekt

para_noid

hirnrissig
Tach auch,

ich versuche gerade ein Sessionarray zu einem JSON-String dieser Art
Code:
{"rows":[
  {"id":"1","cell":["Wert1A","Wert1B","Wert1C"]},
  {"id":"2","cell":["Wert2A","Wert2B","Wert2C"]}
  ]
}
umzufuchteln. Soweit ich das begriffen habe, spiegelt diese Syntax die Ausgabe als Array wider.


Heraus bekomme ich aber Folgendes:

PHP:
var_dump($_SESSION['LIST'];
echo json_encode($_SESSION['LIST']);

Code:
array(1) {
  ["rows"]=>
  array(2) {
    [1]=>
    array(2) {
      ["id"]=>
      string(1) "1"
      ["cell"]=>
      array(5) {
        [0]=>
        string(6) "Wert1A"
        [1]=>
        string(9) "Wert1B"
        [2]=>
        string(7) "Wert1C"        
      }
    }
    [2]=>
    array(2) {
      ["id"]=>
      string(1) "2"
      ["cell"]=>
      array(5) {
        [0]=>
        string(6) "Wert2A"
        [1]=>
        string(9) "Wert2B"
        [2]=>
        string(7) "Wert2C"
      }
    }
  }
}



{"rows":
  {"1":{"id":"1","cell":["Wert1A","Wert1B","Wert1C"]},
   "2": {"id":"2","cell":["Wert2A","Wert2B","Wert2C"]}
  }
}

Wenn ich das hier richtig verstehe, wird das Array als Objekt ausgegeben. Das sollte aber nur bei Angabe von JSON_FORCE_OBJECT passieren.

Nu schätz ich, dass das übergebene Sessionarray falsch aufgebaut ist, aber ich weiß nicht wie ich es abändern soll.
Hätte jemand einen Vorschlag?
 
Das liegt daran, dass du ein assoziatives Array verwendest ($_SESSION["id"]).
Wo ist denn das Problem mit dem Objekt? Warum muss es denn ein Array in json sein?
 
In JavaScript sind Arrays auch Objekte, Ihr wisst ja:
Javascript:
var foo = new Array();

von daher kannst du das Objekt auch wie ein Array behandeln.
 
Zuletzt bearbeitet:
Bei der Rückumwandlung in PHP sollte es auch mit einem einfachen Typecasting zurückgehen (ungetestet):
PHP:
$array = (array) json_decode('ein_objekt');
 
Zurück