You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin C#将JSON值转换为System.Collections.Generic.List类型报错如何解决

错误原因

  1. 执行了多余的序列化操作:你从二维码解密得到的text本身就是合法JSON字符串,你额外调用JsonConvert.SerializeObject(text),相当于把JSON字符串再次序列化为带转义符的普通字符串,此时jsonInscripcion的内容不是对象结构的JSON,无法匹配目标模型。
  2. 反序列化类型不匹配:你提供的JSON是单个InscripcionesModel对象,并不是对象数组,直接反序列化为List<InscripcionesModel>会触发类型不匹配错误。

解决方法

调整对应代码逻辑即可,修改后的核心代码如下:

if (result != null)
{
    // 解密直接得到原始JSON
    var text = Encriptacion.Decrypt(result.ToString());
    var Inscripciones = new HttpClient();
    // 直接用原始JSON构造请求体,无需二次序列化
    var contentJsonInscripcion = new StringContent(text, Encoding.UTF8, "application/json");

    // 直接反序列化为单个InscripcionesModel对象
    var DatosRegistro = JsonConvert.DeserializeObject<InscripcionesModel>(text);
    await DisplayAlert("Mensaje", DatosRegistro.DNI, "OK");
    RegistrosModel registro = new RegistrosModel
    {
        Fecha_hora = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss"),
        Dni = DatosRegistro.DNI,
        Id_inscripcion = DatosRegistro.Id_inscripcion,
        Id_disciplina = DatosRegistro.Id_disciplina
    };
    // PUT请求拼接参数直接用对象属性即可,无需取下标
    var respoonseInscripcion = await Inscripciones.PutAsync(urlInscripcion + DatosRegistro.Id_inscripcion.ToString(), contentJsonInscripcion);

    // 剩余后续逻辑保持不变
}

内容的提问来源于stack exchange,提问作者Alejo Fontao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 22:45:02