¿Es posible que la conversión de combinación interna seleccione resultado a la lista anidada JSON?

BingbongKim:

Estoy desarrollando un controlador de API con la primavera.

Tengo dos tablas y que son relaciones de uno a muchos.
Un vídeo puede tener varios productos.

introducir descripción de la imagen aquí

Puedo seleccionar la información de vídeo y de producto con consulta de combinación.
El resultado es selecto, como a continuación:

introducir descripción de la imagen aquí

El JSON Lo que me gustaría es que el retorno a continuación:

{
"videos": [{
    "video_id": "V0001",
    "video_nm": "Video001",
    "description": "Some text",
    "thumbnail": "path/img/aaa.jpg",
    "reg_dt": "11-30-2019",
    "products": [{
        "product_id": "P0001",
        "product_nm": "Product001",
        "description": "Some text",
        "info_url": "http://product.com"
    }, ...]
}, ...]
}


¿Es posible crear el anterior JSON con el resultado de la consulta? O debería cambiar el formato JSON?

Bill Karwin:

Para dar formato JSON en MySQL, es necesario utilizar el JSON_OBJECT () la función y el () JSON_ARRAYAGG funciones.

Algo parecido a lo siguiente - pero no he probado.

SELECT JSON_OBJECT('videos', JSON_ARRAYAGG(vid_subquery.video)) AS videos
FROM (
  SELECT
    JSON_OBJECT(
      'video_id', v.video_id,
      'video_nm', v.video_nm,
      'description', v.description,
      'thumbnail', v.thumbnail,
      'reg_dt', v.reg_dt,
      'products', JSON_ARRAYAGG(
        JSON_OBJECT(
          'product_id', p.product_id,
          'product_nm', p.product_nm,
          'description', p.description,
          'info_url', p.info_url
        )
      )
    ) AS video
  FROM video AS v
  LEFT OUTER JOIN product AS p ON p.video_id = v.video_id
  GROUP BY v.video_id
) AS vid_subquery

Si eso parece demasiado difícil, entonces usted debe seguir los consejos en los comentarios y escribir un asignador de Java para hacerlo.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=182371&siteId=1
Recomendado
Clasificación