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.

¿Cómo decodificar cualquier valor JSON a cadena con el objeto Decodable en Swift?

De acuerdo con mi pregunta, quiero decodificar todos los campos de mi json como un valor de cadena.

Mi json se ve así:

{ name: “admin_tester”,
price: 99.89977202,
no: 981,
id: “nfs-998281998”,
amount: 98181819911019.828289291329 }

Y quiero crear mi estructura de esta manera:

struct StockNFS: Decodable {
let name: String?
let price: String?
let no: String?
let id: String?
let amount: String?
}

Pero si declaro mi estructura de esta manera, cuando use json decode obtendré un error de tipo de coincidencia.

La razón por la cual quiero asignar cada valor como cadena es porque si uso un doble o decimal para precio y cantidad, después de codificar, a veces el valor será incorrecto. Por ejemplo 0,125, obtenré 0,124999999.

Solo quiero recibir cualquier dato como tipo de cadena para mostrar en la interfaz de usuario (no editar ni manipular el valor).

Agradeceré cualquier ayuda. Muchas gracias.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Puede usar el inicializador String(describing:) para convertir los valores en cadenas. Por ejemplo:

    struct StockNFS: Decodable {
    let name: String?
    let price: String?
    let no: String?
    let id: String?
    let amount: String?

    init(from decoder: Decoder) throws {
         let container = try decoder.container(keyedBy: CodingKeys.self)
         name = try container.decode(String.self, forKey: .name)
         price = String(describing: try container.decode(Double.self, forKey: .price))
         no = String(describing: try container.decode(Int.self, forKey: .no))
         id = try container.decode(String.self, forKey: .id)
         amount = String(describing: try container.decode(Double.self, forKey: .amount))
     }
    

    }

Comments are closed.