# Json output by responseFactory or JsonResponse?

**URL:** <https://discourse.laminas.dev/t/json-output-by-responsefactory-or-jsonresponse/2823>\
**Category:** Components & MVC\
**Tags:** psr-7, laminas-mvc\
**Created:** [March 20, 2022, 7:26am UTC](https://discourse.laminas.dev/t/json-output-by-responsefactory-or-jsonresponse/2823 "2022-03-20T07:26:09Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![voltan](https://yyz2.discourse-cdn.com/flex032/user_avatar/discourse.laminas.dev/voltan/32/710_2.png) [@voltan](https://discourse.laminas.dev/u/voltan)\
**Post date:** [March 20, 2022, 7:26am UTC](https://discourse.laminas.dev/t/json-output-by-responsefactory-or-jsonresponse/2823/1 "2022-03-20T07:26:09Z")

</div>

Hello

I try to write modules by supporting PSR7, just a question from JSON output in handler, which one is correct?

Simple output by JsonResponse

```auto
        $result = [
            'result' => true,
            'data' => $account,
            'error' => '',
        ];

        return new JsonResponse($result);

```

Or use PSR responseFactory

```auto
        $result = [
            'result' => true,
            'data' => $account,
            'error' => '',
        ];

        $result = json_encode($result);
        $response = $this->responseFactory->createResponse(200)->withHeader('Content-Type', 'application/json');
        $response->getBody()->write($result);
        return $response;

```

Or `JsonResponse` is a child of PSR `responseFactory`?

Thanks

---

<div class="post-metadata">

**Author:** ![froschdesign](https://yyz2.discourse-cdn.com/flex032/user_avatar/discourse.laminas.dev/froschdesign/32/38_2.png) [@froschdesign](https://discourse.laminas.dev/u/froschdesign)\
**Post date:** [March 25, 2022, 8:43am UTC](https://discourse.laminas.dev/t/json-output-by-responsefactory-or-jsonresponse/2823/2 "2022-03-25T08:43:31Z")

</div>

> [@voltan](#):
>
> Simple output by JsonResponse

The [custom response](https://docs.laminas.dev/laminas-diactoros/v2/custom-responses/) class for JSON implements `Psr\Http\Message\ResponseInterface` and is a class of laminas-diactoros.

> [@voltan](#):
>
> Or use PSR responseFactory

The factory implements `Psr\Http\Message\ResponseFactoryInterface` but is also a class of laminas-diactoros.

> [@voltan](#):
>
> Or `JsonResponse` is a child of PSR `responseFactory`?

No:

> <https://github.com/laminas/laminas-diactoros/blob/960e3310bffe65e39747b5209b939b2b68848983/src/Response/JsonResponse.php#L20-L27>

> <https://github.com/laminas/laminas-diactoros/blob/960e3310bffe65e39747b5209b939b2b68848983/src/Response.php#L16-L23>

Therefore, choose the option that is easier for you. And if you want to change the PSR-7 and PSR-17 library later, that works quite easily for both variants.

---

<div class="post-metadata">

**Author:** ![voltan](https://yyz2.discourse-cdn.com/flex032/user_avatar/discourse.laminas.dev/voltan/32/710_2.png) [@voltan](https://discourse.laminas.dev/u/voltan)\
**Post date:** [March 25, 2022, 3:57pm UTC](https://discourse.laminas.dev/t/json-output-by-responsefactory-or-jsonresponse/2823/3 "2022-03-25T15:57:21Z")

</div>

Thank you very much. I choose `JsonResponse` for our modules

Best
