es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Corrección de JSON inválido en SQL.

Estoy analizando json en redshift utilizando json_extract_path_text, pero este json es inválido (uno de los campos contiene comillas dobles dentro del valor de la cadena):


"somefield": "4 *\"`)(z"

¿Hay alguna forma de deshacerse de esta comilla y reemplazarla con algún otro valor (realmente no me importa este dato en particular ya que de todos modos está mal, pero quiero buscar otras partes de este json)?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, puedes reemplazar las comillas dobles por algún otro valor utilizando la función replace en combinación con json_extract_path_text. Aquí tienes un ejemplo de consulta:

    `sql
    SELECT json_extract_path_text(mi_json, 'alguncampo') AS texto_original,
    replace(json_extract_path_text(mi_json, 'alguncampo'), '\\"', '[sustituto]') AS texto_modificado
    FROM mi_tabla
    WHERE ...
    `

    En el ejemplo anterior, mi_json es el nombre de la columna que contiene los datos JSON y mi_tabla es el nombre de la tabla que contiene los datos. La función replace toma dos argumentos: el primero es el texto que se busca (en este caso, \\", que es la versión escapada de una comilla doble), y el segundo es el valor de reemplazo. En este caso, lo estamos reemplazando con la cadena [sustituto]. Puedes reemplazar ese valor por lo que quieras.

    Al usar json_extract_path_text dos veces, podemos comparar el texto original con el texto modificado y ver que se ha reemplazado la comilla doble:

    texto_original texto_modificado
    “4 *\”`) (z” 4 *[sustituto]?) (z

Comments are closed.