### 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
headers=dict(type='dict', default={}),
        unix_socket=dict(type='path'),
        remote_src=dict(type='bool', default=False),
        ca_path=dict(type='path', default=None),
        unredirected_headers=dict(type='list', elements='str', default=[]),
        decompress=dict(type='bool', default=True),
        ciphers=dict(type='list', elements='str'),
        use_netrc=dict(type='bool', default=True),
    )
    module = AnsibleModule(
        argument_spec=argument_spec,
        add_file_common_args=True,
        mutually_exclusive=[['body', 'src']],
    )
    url = module.params['url']
    body = module.params['body']
    body_format = module.params['body_format'].lower()
    method = module.params['method'].upper()
    dest = module.params['dest']
    return_content = module.params['return_content']
    creates = module.params['creates']
    removes = module.params['removes']
    status_code = [int(x) for x in list(module.params['status_code'])]
    socket_timeout = module.params['timeout']
    ca_path = module.params['ca_path']
    dict_headers = module.params['headers']
    unredirected_headers = module.params['unredirected_headers']
    decompress = module.params['decompress']
    ciphers = module.params['ciphers']
    use_netrc = module.params['use_netrc']