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.

Obtener título del elemento de Zotero.

Todavía soy muy nuevo en Rust, intentando entender cómo extraer el title de un JournalArticle usando la biblioteca Zotero.

Tengo esto y puedo confirmar que el elemento se recupera correctamente:


let zc = ZoteroCredentials::new();
let z = ZoteroInit::set_user(&zc.api_id, &zc.api_key);
let item = z.get_item(item_id, None).unwrap();

Desde aquí, veo que item.data es un ItemType, específicamente un JournalArticleData. Pero en realidad no comprendo cómo hacer una de estas dos cosas: a) serializar esto a JSON, o b) acceder a .title como propiedad.

En contexto, esto sería el resultado de una ruta GET de Rocket.

¡Cualquier ayuda sería muy apreciada!

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para extraer el title de un JournalArticle usando la biblioteca Zotero en Rust, puedes acceder a la propiedad title de la estructura JournalArticleData a través del campo item.data. Aquí tienes un ejemplo:

    use zotero::ZoteroInit;
    use zotero::data_structure::item::{Item, ItemType};
    use zotero::ZoteroCredentials;
    
    fn get_journal_article_title(item_id: &str) -> Result<string,></string,><dyn std::error::error="">> {
        let zc = ZoteroCredentials::new();
        let z = ZoteroInit::set_user(&zc.api_id, &zc.api_key);
        let item: Item = z.get_item(item_id, None)?.unwrap();
    
        match item.data {
            ItemType::JournalArticle(ja) => Ok(ja.title),
            _ => Err(format!("El ítem {} no es un JournalArticle", item_id).into())
        }
    }
    

    En este ejemplo, la función get_journal_article_title toma un item_id como entrada y devuelve un Result<string,></string,><dyn std::error::error="">>. Primero, utiliza la biblioteca zotero para recuperar el Item correspondiente al item_id proporcionado. Luego, utiliza el patrón de coincidencia en el campo item.data para comprobar si el ItemType es un JournalArticle. Si lo es, devuelve la propiedad title de la estructura JournalArticleData. De lo contrario, devuelve un mensaje de error.

    No es necesario serializar JournalArticleData a JSON para acceder a sus propiedades. Simplemente puedes acceder a ellas directamente con la notación de punto, como se muestra en el ejemplo anterior.

Comments are closed.