Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

252
Visualizações
Cómo leer el tipo de datos JSON en mysql usando JDBC

Mysql 5.7 introdujo el tipo de datos JSON que ofrece toneladas de funciones de consulta.

Dado que no hay una función de conjunto de resultados compatible, cómo y qué debo usar para recuperar los datos almacenados en este tipo de datos.

about 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Debería ser rs.getString , porque getString se usa con VARCHAR , TEXT , podemos considerar a JSon como un tipo String , para que pueda obtener el resultado usando getString .


Ejemplo sencillo

Verifique dos veces con MySQL 5.7 y PostgreSQL 9.4:

MySQL 5.7 SQL

 create database db_test; create table table_test(json JSON); INSERT INTO table_test VALUES('{"key1": "value1", "key2": "value2"}');

CÓDIGO

 public static void checkJSon() { try { Class.forName(DRIVER); Connection connection = DriverManager.getConnection(DB_URL, DB_username, DB_password); String q = "SELECT * FROM table_test"; PreparedStatement preparedStatement = connection.prepareStatement(q); preparedStatement.execute(); ResultSet rs = preparedStatement.executeQuery(); while (rs.next()) { System.out.println(rs.getString("json")); } } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); } }

Me imprime:

 {"key1": "value1", "key2": "value2"}
about 4 years ago · Santiago Trujillo Relatório

0

En caso de que JDBC no sea un requisito estricto, las versiones recientes de jOOQ implementaron una forma lista para usar de asignar valores SQL JSON a tipos arbitrarios de Java utilizando las populares bibliotecas de asignación de JSON Jackson o gson (cualquiera que se pueda encontrar en su classpath) . A continuación, puede escribir:

 List<MyClass> list = ctx.select(TABLE.ID, TABLE.JSON_COLUMN) .from(TABLE) .where(...) .fetchInto(MyClass.class);

Con, por ejemplo:

 public class MyClass { public int id; public MyOtherClass jsonColumn; } public class MyOtherClass { public String something; public List<String> list; }

Suponiendo que su JSON_COLUMN contiene datos de la forma:

 { "something": "x", "list": [ "a", "b", "c" ] }

Esto también funciona con todas las funciones SQL/JSON admitidas de forma nativa, para crear dichos documentos JSON sobre la marcha .

(Descargo de responsabilidad: trabajo para la empresa detrás de jOOQ)

about 4 years ago · Santiago Trujillo Relatório

0

En caso de que alguien todavía esté buscando, lo estaba probando con Mysql 5.7, pero los métodos sugeridos anteriormente no manejan muy bien los datos que no son ascii, muchos caracteres asiáticos, etc.). Terminan mostrándose distorsionados.

La solución es leer los bytes sin procesar usando getBinaryStream. El código se demuestra a continuación:

 public String fromJSON(ResultSet rs, String fieldName){ InputStream is = rs.getBinaryStream(fieldName); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String content = br.lines().reduce("", String::concat); br.close(); return content; }

Lo anterior podría encapsularse en una función de JSON y usarse ampliamente. p.ej

 PreparedStatement st = getStatement("select json from x;"); ResultSet rs = st.executeQuery(); while (rs.next()) { return fromJSON(rs, "json"); }
about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda