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.

Deserializar la cadena dentro de JSON.

Recibo una respuesta JSON con la siguiente estructura:

[
    {
        "dateCreated": "07-22-2021",
        "comments": "Comentarios",
        "url_list": "[{\"id\":1,\"name\":\"\",\"img\":\"https://legacynissan-ez360.imgix.net/1C3CDFEB6GD555251/1C3CDFEB6GD555251-2016-Dodge-Dart.sp_turntable_pic.1000.16x9-3840x2160-4K.20210721130782.jpg?w=300\",\"is_checked\":false,\"pois\":[]},{\"id\":2,\"name\":\"\",\"img\":\"https://legacynissan-ez360.imgix.net/1C3CDFEB6GD555251/1C3CDFEB6GD555251-2016-Dodge-Dart.sp_turntable_pic.1001.16x9-3840x2160-4K.20210721130782.jpg?w=300\",\"is_checked\":false,\"pois\":[]},{\"id\":3,\"name\":\"\",\"img\":\"https://legacynissan-ez360.imgix.net/1C3CDFEB6GD555251/1C3CDFEB6GD555251-2016-Dodge-Dart.sp_turntable_pic.1002.16x9-3840x2160-4K.20210721130782.jpg?w=300\",\"is_checked\":false,\"pois\":[]}]"
    }
]

Básicamente tengo una lista de objetos (este contiene dateCreated, comentarios y url_list). Mi problema es que url_list es una lista de objetos guardados como una cadena de texto y no sé cómo deserializar esa cadena en un objeto.

1) ¿Es esto posible?
2) ¿Cómo se puede hacer?

Estoy utilizando el cliente Ktor y kotlinx Serialization.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible deserializar la cadena en un objeto utilizando kotlinx Serialization.

    Para hacer esto, necesitas crear una clase de datos para los objetos en url_list y luego utilizar Kotlinx Serialization para deserializar la cadena en una lista de los objetos.

    Aquí tienes un ejemplo de implementación:

    1. Crea una clase de datos para los objetos en url_list
    @Serializable
    data class UrlObject(
        val id: Int,
        val name: String,
        val img: String,
        val is_checked: Boolean,
        val pois: List<any>
    )
    
    1. Crea una clase de datos para el objeto principal que contiene url_list
    @Serializable
    data class MainObject(
        val dateCreated: String,
        val comments: String,
        val url_list: List<urlobject>
    )
    
    1. Utiliza Kotlinx Serialization para deserializar la cadena en una lista de MainObject
    val json = """[{"dateCreated":"07-22-2021",
                    "comments":"Comentarios",
                    "url_list":"[{"id":1,"name":"","img":"https://legacynissan-ez360.imgix.net/1C3CDFEB6GD555251/1C3CDFEB6GD555251-2016-Dodge-Dart.sp_turntable_pic.1000.16x9-3840x2160-4K.20210721130782.jpg?w=300","is_checked":false,"pois":[]},{"id":2,"name":"","img":"https://legacynissan-ez360.imgix.net/1C3CDFEB6GD555251/1C3CDFEB6GD555251-2016-Dodge-Dart.sp_turntable_pic.1001.16x9-3840x2160-4K.20210721130782.jpg?w=300","is_checked":false,"pois":[]},{"id":3,"name":"","img":"https://legacynissan-ez360.imgix.net/1C3CDFEB6GD555251/1C3CDFEB6GD555251-2016-Dodge-Dart.sp_turntable_pic.1002.16x9-3840x2160-4K.20210721130782.jpg?w=300","is_checked":false,"pois":[]}]}]"""
    
    val mainObjects = Json.decodeFromString<><mainobject>>(json)
    

    Después de ejecutar este código, deberías obtener una lista de MainObject con cada objeto que contiene dateCreated, comments y una lista de UrlObject.

Comments are closed.