### Summary

It looks like the PR #79719 broke the support for the automatic json conversion for the `application/ld+json` and `vnd.api+json` (JSON:API spec) response header.

The earlier check: `any(candidate in sub_type for candidate in JSON_CANDIDATES)`, would return `true` for sub_type `ld+json`. However after the change in this commit, `sub_type.lower() in JSON_CANDIDATES` would return `false` for sub_type `ld+json`.

This causes the automatic loading into a key called json in the dictionary results, to not happen anymore, which of course resulted into an error in our ansible playbook: `'dict object' has no attribute 'json'`

Since `application/ld+json` seems to be a globally acknowledged content type, I would assume this should keep working.

### Issue Type

Bug Report

### Component Name

uri

### Ansible Version

```console
$ ansible --version
ansible [core 2.14.5]
  config file = None
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.10/dist-packages/ansible
  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/bin/ansible
  python version = 3.10.6 (main, Mar 10 2023, 10:55:28) [GCC 11.3.0] (/usr/bin/python3)
  jinja version = 3.1.2
  libyaml = False
```


### Configuration

```console
# if using a version older than ansible-core 2.12 you should omit the '-t all'
$ ansible-config dump --only-changed -t all
CONFIG_FILE() = None
```


### OS / Environment

Windows / WSL2 / Ubuntu 20.04.5 LTS

### Steps to Reproduce

<!--- Paste example playbooks or commands between quotes below -->
```yaml (paste below)
- name: "Perform task"
  ansible.builtin.uri:
    url: "http://some_url_with_json_api_spec_formatted_response"
    method: "POST"
    body: "{{ lookup('template', './templates/some_template') }}"
    body_format: json
    status_code: 201
    headers:
      Content-Type: "application/vnd.api+json"
  register: json_api_spec_output
- name: "Record id"
  set_fact:
    response_id: "{{ json_api_spec_output.json.data.id }}"
```


### Expected Results

The id is saved into the response_id variable.

### Actual Results

```console
The task includes an option with an undefined variable. The error was: 'dict object' has no attribute 'json'.
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
description:
      - If C(false), the module will search for the C(src) on the controller node.
      - If C(true), the module will search for the C(src) on the managed (remote) node.
    type: bool
    default: no
    version_added: '2.7'
  force:
    description:
      - If C(true) do not get a cached copy.
    type: bool
    default: no
  use_proxy:
    description:
      - If C(false), it will not use a proxy, even if one is defined in an environment variable on the target hosts.
    type: bool
    default: true
  unix_socket:
    description:
    - Path to Unix domain socket to use for connection
    type: path
    version_added: '2.8'
  http_agent:
    description:
      - Header to identify as, generally appears in web server logs.
    type: str
    default: ansible-httpget
  unredirected_headers:
    description:
      - A list of header names that will not be sent on subsequent redirected requests. This list is case
        insensitive. By default all headers will be redirected. In some cases it may be beneficial to list