forked from loafle/openapi-generator-original
[PHP] ObjectSerializer fix for array of objects (#6331)
* [PHP] ObjectSerializer fix for array of objects Array of objects translate to "map[string,object][]" and they fail to deserialize. This is because the deserialization does not parse the mapping string correctly. A quick fix is trying moving array deserialization before object deserialization. Example object ObjectExample: type: object properties: data: type: array items: type: object additionalProperties: true * Update sample Co-authored-by: Alexandru Negrila <alex@arntech.ro>
This commit is contained in:
parent
634291f4b8
commit
e5c72a0ab6
@ -250,6 +250,14 @@ class ObjectSerializer
|
||||
{
|
||||
if (null === $data) {
|
||||
return null;
|
||||
} elseif (strcasecmp(substr($class, -2), '[]') === 0) {
|
||||
$data = is_string($data) ? json_decode($data) : $data;
|
||||
$subClass = substr($class, 0, -2);
|
||||
$values = [];
|
||||
foreach ($data as $key => $value) {
|
||||
$values[] = self::deserialize($value, $subClass, null);
|
||||
}
|
||||
return $values;
|
||||
} elseif (substr($class, 0, 4) === 'map[') { // for associative array e.g. map[string,int]
|
||||
$data = is_string($data) ? json_decode($data) : $data;
|
||||
settype($data, 'array');
|
||||
@ -263,14 +271,6 @@ class ObjectSerializer
|
||||
}
|
||||
}
|
||||
return $deserialized;
|
||||
} elseif (strcasecmp(substr($class, -2), '[]') === 0) {
|
||||
$data = is_string($data) ? json_decode($data) : $data;
|
||||
$subClass = substr($class, 0, -2);
|
||||
$values = [];
|
||||
foreach ($data as $key => $value) {
|
||||
$values[] = self::deserialize($value, $subClass, null);
|
||||
}
|
||||
return $values;
|
||||
} elseif ($class === 'object') {
|
||||
settype($data, 'array');
|
||||
return $data;
|
||||
|
@ -260,6 +260,14 @@ class ObjectSerializer
|
||||
{
|
||||
if (null === $data) {
|
||||
return null;
|
||||
} elseif (strcasecmp(substr($class, -2), '[]') === 0) {
|
||||
$data = is_string($data) ? json_decode($data) : $data;
|
||||
$subClass = substr($class, 0, -2);
|
||||
$values = [];
|
||||
foreach ($data as $key => $value) {
|
||||
$values[] = self::deserialize($value, $subClass, null);
|
||||
}
|
||||
return $values;
|
||||
} elseif (substr($class, 0, 4) === 'map[') { // for associative array e.g. map[string,int]
|
||||
$data = is_string($data) ? json_decode($data) : $data;
|
||||
settype($data, 'array');
|
||||
@ -273,14 +281,6 @@ class ObjectSerializer
|
||||
}
|
||||
}
|
||||
return $deserialized;
|
||||
} elseif (strcasecmp(substr($class, -2), '[]') === 0) {
|
||||
$data = is_string($data) ? json_decode($data) : $data;
|
||||
$subClass = substr($class, 0, -2);
|
||||
$values = [];
|
||||
foreach ($data as $key => $value) {
|
||||
$values[] = self::deserialize($value, $subClass, null);
|
||||
}
|
||||
return $values;
|
||||
} elseif ($class === 'object') {
|
||||
settype($data, 'array');
|
||||
return $data;
|
||||
|
Loading…
x
Reference in New Issue
Block a user