_REST export
_表示でビューを作成し、結果はJson
でシリアル化されます。
私のformBuildメソッドでは、JSONを解析して配列に変換し、選択オプションで使用したい
_ $Host = \Drupal::request()->getHost();
$response = \Drupal::httpClient()
->get($Host.'/get/slider' );
$json_string = $response->getBody()->getContents();
kint($json_string);
_
私は Symfony serialize class を見て、この例でDeserialize
メソッドを見つけます
_ $person = $serializer->deserialize($data, 'Acme\Person', 'xml');
_
これによると、たぶん私は何かのようにすべきだと思います
_ $results = $serializer->deserialize($json_string, '???', 'josn');
_
しかし、私は2番目のparam(???)で何を書くべきですか?やってみる
_ $serialize = new Serializer\Serializer();
$json_string = $response->getBody()->getContents();
$entity = $serialize->deserialize($json_string, '\Drupal\node\Entity\Node::class', 'json') ;
_
しかし、エラーSymfony\Component\Serializer\Exception\UnexpectedValueException: Deserialization for the format json is not supported in Symfony\Component\Serializer\Serializer->deserialize()
で私に直面します。
そして、より良い解決策がある場合は教えてくださいビューを非シリアル化するにはどうすればよいですかREST結果?
updateまた、私は試しました
_ $json_string = $response->getBody()->getContents();
$serializer = \Drupal::service('serializer');
$deserialized = $serializer->deserialize($json_string, \Drupal\node\Entity\Node::class, 'json');
_
しかしSymfony\Component\Serializer\Exception\UnexpectedValueException: A string must be provided as a bundle value. in Drupal\serialization\Normalizer\EntityNormalizer->denormalize()
Drupalにはシリアル化のためのサービスがあり、必要なノーマライザとエンコーダで事前設定されています。現在発生しているエラーは、Symfony\Component\Serializer\Encoder\JsonEncoder
を使用してシリアライザのインスタンスを設定していないためですが、たとえば、Drupal\serialization\Normalizer\ConfigEntityNormalizer
ノーマライザも必要です。
このコードは私にとってうまくいきます:
$serializer = \Drupal::service('serializer');
$node = \Drupal::entityTypeManager()->getStorage('node')->load(1);
$output = $serializer->serialize($node, 'json');
$deserialized_node = $serializer->deserialize($output, \Drupal\node\Entity\Node::class, 'json');
いつものように、可能であればサービスを注入します。
最初にjson_decode
をお試しくださいuse Drupal\Core\Serializer;
あなたのコードで
$json_string = $response->getBody()->getContents();
$res =json_decode($json_string);