【问题标题】:Serialization / Normalizing of data to JSON: How to programmatically change the output mapping?将数据序列化/规范化为 JSON:如何以编程方式更改输出映射?
【发布时间】:2013-02-01 05:41:34
【问题描述】:

我有以下控制器/动作:

 public function messagesAction()
  {
    $encoders = array(new JsonEncoder());
    $normalizers = array(new GetSetMethodNormalizer());
    $serializer = new Serializer($normalizers, $encoders);
    $message = $this->getDoctrine()
      ->getRepository('AcmeStoreBundle:Message')
      ->findAll();
    $response = new Response($serializer->serialize($message, 'json')); 
    $response->headers->set('Content-Type', 'application/json');
    return $response;
  }
}

发送以下 json:

[
    {
        "id": 1,
        "iam": 1,
        "youare": 2,
        "lat": 50.8275853,
        "lng": 4.3809764,
        "msgbody": "Lorem ipsum lorem ipsum lorem ipsum"
    },
    {
        "id": 2,
        "iam": 1,
        "youare": 2,
        "lat": 50.8307348,
        "lng": 4.3734823,
        "msgbody": "What up?"
    }
]

我没有命名键,我的 Javascript fw (Ember) 很难获取一些对象。

我想将 Json 输出更改为:

[
    {
      "message": {
        "id": "1",
        "iam": "male",
        "youare": "female",
        "lat": "50.8307348"
      }
    }
]

我知道我可以使用一些正则表达式,但我真的不知道在哪里。如您所见,我正在使用标准的开箱即用序列化程序(这是我可以返回有效 Json 的唯一方法)。它是否带有做我想做的事情的选项? (奖励:我还想在发送数据之前对其进行操作..)

【问题讨论】:

    标签: php json serialization symfony


    【解决方案1】:

    为了解决这类问题,我开发了一个 sf2 包来将数据导出为不同的格式,您可以使用 twig 模板自定义输出

    https://github.com/IDCI-Consulting/ExporterBundle

    希望这会有用。

    【讨论】:

    • 您能否提供更多关于如何解决具体问题的信息? (正如我所见,捆绑就像是序列化器捆绑的完全替代品..)
    猜你喜欢
    • 1970-01-01
    • 2019-12-21
    • 2017-04-05
    • 2019-10-10
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    • 2016-11-18
    • 2023-03-18
    相关资源
    最近更新 更多