Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

401
Vistas
Rust usa el atributo JSON de Postgres: no se puede convertir entre el tipo de Rust `alloc::string::String` y el tipo de Postgres `jsonb`

Actualmente puedo usar el siguiente código, pero no quiero tener que convertir mi JSON en texto en mi consulta de postgres, ya que agrega latencia.

 async fn reverse_geocode(min : f32, max : f32, pool: &Pool) -> Result<String, PoolError> { let client: Client = pool.get().await?; let sql = format!("select \"json\"::TEXT from get_data({}, {})", min, max); let stmt = client.prepare(&sql).await?; let rows = client.query(&stmt, &[]).await?; Ok(rows[0].get(0)) }

Si no transfiero mi JSON a texto, obtengo el siguiente error:

 error retrieving column 0: error deserializing column 0: cannot convert between the Rust type `alloc::string::String` and the Postgres type `jsonb`

¿Qué tipo se puede usar para devolver ese valor json sin convertirlo en texto?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Para usar los valores Json y Jsonb, debe habilitar la función en la creación de postgres con features = ["with-serde_json-1"]

Y luego puede cambiar su tipo de devolución para que sea Result<serde_json::Value,PoolError>

por lo que tendría en su cargo.toml

 [dependencies] postgres = {version = "0.17.3" , features = ["with-serde_json-1"] } serde_json = "1.0.56"

y en tu main.rs

 async fn reverse_geocode(min : f32, max : f32, pool: &Pool) -> Result<serde_json::Value, PoolError> { let client: Client = pool.get().await?; let sql = format!("select \"json\" from get_data({}, {})", min, max); let stmt = client.prepare(&sql).await?; let rows = client.query(&stmt, &[]).await?; Ok(rows[0].get(0)) }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda