2017-05-19 8 views
1

에서 사전을 역 직렬화 할 수 없습니다. soportes [0]에는 Aviso 배열이 있어야하며, soportes [1]에는 Placa 배열이 있습니다. Json.NET과 구문 분석 할 때도 Dictionary soportes 클래스와 Soporte 클래스 사이에 아무런 관련이 없으면 오류가 발생하지 않습니다. (이 있는지 모르겠다)도 구문 분석,하지만 난이 (첫번째 역 직렬화)와 같은 사전 soportes에 액세스하려고 할 때 수 :내가이 클래스가 JSON

SoporteFile curContent = JsonConvert.DeserializeObject<SoporteFile>(File.ReadAllText(curFolder + @"/Contenido.json")); 

curContent.soportes[0]를 내가 오류 (오류 CS0176 회원은에 액세스 할 수 없습니다 인스턴스 참조; 대신 유형 이름으로 한정). 그리고 내가 이것을 할 경우 SoporteFile.soportes[0] 객체의 인스턴스로 참조가 설정되지 않습니다.이 마지막 오류는 스페인어에서 번역 된 것으로 약간 다를 수 있습니다. 내가 뭘 잘못하고있어? 그것의 경우

여기에 내가 역 직렬화 할 json으로, 그것은 필요합니다

{ 
"eventos": [ 
    { 
     "id_evento": 5, 
     "id_calendario": 5, 
     "id_usuario": 1, 
     "fecha_carga": "2017-04-25 08:47:20", 
     "descripcion": "Mañanas", 
     "lugar": null, 
     "resumen": null, 
     "fecha_inicio": "2017-05-16", 
     "hora_inicio": "06:00:00", 
     "fecha_limite": "2017-05-16", 
     "hora_limite": "12:00:00", 
     "dia_completo": 0, 
     "id_estado": null, 
     "recordatorio": null, 
     "bloqueado": 0, 
     "id_programacion": 1, 
     "color": null 
    }, 
    { 
     "id_evento": 8, 
     "id_calendario": 5, 
     "id_usuario": 1, 
     "fecha_carga": "2017-04-27 16:51:56", 
     "descripcion": "Tarde", 
     "lugar": null, 
     "resumen": null, 
     "fecha_inicio": "2017-05-16", 
     "hora_inicio": "12:00:00", 
     "fecha_limite": "2017-05-16", 
     "hora_limite": "20:00:00", 
     "dia_completo": 0, 
     "id_estado": null, 
     "recordatorio": null, 
     "bloqueado": 0, 
     "id_programacion": 1, 
     "color": null 
    }, 
    { 
     "id_evento": 5, 
     "id_calendario": 5, 
     "id_usuario": 1, 
     "fecha_carga": "2017-04-25 08:47:20", 
     "descripcion": "Mañanas", 
     "lugar": null, 
     "resumen": null, 
     "fecha_inicio": "2017-05-17", 
     "hora_inicio": "06:00:00", 
     "fecha_limite": "2017-05-17", 
     "hora_limite": "12:00:00", 
     "dia_completo": 0, 
     "id_estado": null, 
     "recordatorio": null, 
     "bloqueado": 0, 
     "id_programacion": 1, 
     "color": null 
    }, 
    { 
     "id_evento": 8, 
     "id_calendario": 5, 
     "id_usuario": 1, 
     "fecha_carga": "2017-04-27 16:51:56", 
     "descripcion": "Tarde", 
     "lugar": null, 
     "resumen": null, 
     "fecha_inicio": "2017-05-17", 
     "hora_inicio": "12:00:00", 
     "fecha_limite": "2017-05-17", 
     "hora_limite": "20:00:00", 
     "dia_completo": 0, 
     "id_estado": null, 
     "recordatorio": null, 
     "bloqueado": 0, 
     "id_programacion": 1, 
     "color": null 
    }, 
    { 
     "id_evento": 5, 
     "id_calendario": 5, 
     "id_usuario": 1, 
     "fecha_carga": "2017-04-25 08:47:20", 
     "descripcion": "Mañanas", 
     "lugar": null, 
     "resumen": null, 
     "fecha_inicio": "2017-05-18", 
     "hora_inicio": "06:00:00", 
     "fecha_limite": "2017-05-18", 
     "hora_limite": "12:00:00", 
     "dia_completo": 0, 
     "id_estado": null, 
     "recordatorio": null, 
     "bloqueado": 0, 
     "id_programacion": 1, 
     "color": null 
    }, 
    { 
     "id_evento": 8, 
     "id_calendario": 5, 
     "id_usuario": 1, 
     "fecha_carga": "2017-04-27 16:51:56", 
     "descripcion": "Tarde", 
     "lugar": null, 
     "resumen": null, 
     "fecha_inicio": "2017-05-18", 
     "hora_inicio": "12:00:00", 
     "fecha_limite": "2017-05-18", 
     "hora_limite": "20:00:00", 
     "dia_completo": 0, 
     "id_estado": null, 
     "recordatorio": null, 
     "bloqueado": 0, 
     "id_programacion": 1, 
     "color": null 
    } 
], 
"programaciones": [ 
    { 
     "id_programacion": 1, 
     "nombre": "Programación estándar", 
     "tipo_corte": 1, 
     "duracion": null, 
     "soportes": [ 
      { 
       "id_soporteprogramacion": 10, 
       "id_programacion": 1, 
       "soporte": 2, 
       "orden": null, 
       "cantidad": 10, 
       "duracion": null 
      }, 
      { 
       "id_soporteprogramacion": 11, 
       "id_programacion": 1, 
       "soporte": 3, 
       "orden": 1, 
       "cantidad": 12, 
       "duracion": null 
      }, 
      { 
       "id_soporteprogramacion": 12, 
       "id_programacion": 1, 
       "soporte": 1, 
       "orden": 2, 
       "cantidad": 5, 
       "duracion": null 
      }, 
      { 
       "id_soporteprogramacion": 13, 
       "id_programacion": 1, 
       "soporte": 12, 
       "orden": 3, 
       "cantidad": 1, 
       "duracion": null 
      }, 
      { 
       "id_soporteprogramacion": 14, 
       "id_programacion": 1, 
       "soporte": 7, 
       "orden": 4, 
       "cantidad": 5, 
       "duracion": null 
      }, 
      { 
       "id_soporteprogramacion": 15, 
       "id_programacion": 1, 
       "soporte": 13, 
       "orden": 5, 
       "cantidad": 1, 
       "duracion": null 
      }, 
      { 
       "id_soporteprogramacion": 16, 
       "id_programacion": 1, 
       "soporte": 8, 
       "orden": 6, 
       "cantidad": 10, 
       "duracion": null 
      } 
     ] 
    } 
], 
"soportes": { 
    "2": [ 
     { 
      "id_placa": 2, 
      "id_ref": 1, 
      "timestamp": "2017-05-16 19:38:35", 
      "id_region": 1, 
      "vigencia_desde": "2017-04-12 08:13:00", 
      "vigencia_hasta": "2018-04-12 08:13:00", 
      "duracion": 1, 
      "imagen": "17202847_10212332856146238_6497670072350234982_n.jpg", 
      "texto": "el texto", 
      "orden": 0, 
      "audio": null 
     }, 
     { 
      "id_placa": 3, 
      "id_ref": 2, 
      "timestamp": "2017-05-16 19:38:35", 
      "id_region": 1, 
      "vigencia_desde": "2017-04-12 08:13:00", 
      "vigencia_hasta": "2018-04-12 08:13:00", 
      "duracion": 1, 
      "imagen": null, 
      "texto": "sin imagen", 
      "orden": 0, 
      "audio": null 
     } 
    ], 
    "1": [ 
     { 
      "id_aviso": 7, 
      "id_ref": 2, 
      "timestamp": "2017-05-16 19:38:35", 
      "id_region": 1, 
      "vigencia_desde": "2017-05-16 19:00:00", 
      "vigencia_hasta": "2018-05-16 23:59:00", 
      "titulo": "RENAULT MEGANE", 
      "id_categoriaaviso": 1, 
      "texto": "TEXTO DEL AVISO", 
      "contacto": null, 
      "imagen": null 
     }, 
     { 
      "id_aviso": 8, 
      "id_ref": 4, 
      "timestamp": "2017-05-16 19:38:35", 
      "id_region": 1, 
      "vigencia_desde": "2017-05-16 19:00:00", 
      "vigencia_hasta": "2018-05-16 23:59:00", 
      "titulo": "FORD FOCUS", 
      "id_categoriaaviso": 1, 
      "texto": "FORD", 
      "contacto": null, 
      "imagen": "Apertura_2008_La_Capital_Rosario.jpg" 
     } 
    ], 
    "13": { 
     "id_region": 1, 
     "timestamp": "2017-05-16 19:38:35", 
     "fecha": "2017-05-16", 
     "descripcion": "El aporte de aire húmedo desde el norte mantiene abundante nubosidad y menor amplitud térmica, mientras que sobre la región Patagónica ingresa un frente frío dando lugar a algunas precipitaciones y descenso de temperatura. " 
    }, 
    "7": [ 
     { 
      "id_portada": 1, 
      "timestamp": "2017-05-16 19:38:35", 
      "id_region": 1, 
      "nombre": "La nación", 
      "url": "\\1.jpg" 
     }, 
     { 
      "id_portada": 2, 
      "timestamp": "2017-05-16 19:38:35", 
      "id_region": 1, 
      "nombre": "Clarín", 
      "url": "\\2.jpg" 
     } 
    ], 
    "8": [ 
     { 
      "id_efemeride": 6, 
      "id_ref": 2, 
      "timestamp": "2017-05-16 19:38:35", 
      "id_region": 1, 
      "fecha": "2017-05-17", 
      "titulo": "Día del enfermero 2", 
      "texto": "En enero de 1974, se tomó la decisión de celebrar una jornada conmemorativa de las contribuciones de los enfermeros a la sociedad, promovida por el Consejo Internacional de Enfermería, que se celebra en todo el mundo cada 12 de mayo, conmemorando el natalicio de Florence Nightingale, considerada \\\"fundadora\\\" de la enfermería moderna. Nacida en 1820, de fe anglicana, creía que Dios la había inspirado para ser enfermera. Alcanzó fama mundial por sus trabajos precursores de enfermería en la asistencia a los heridos durante la guerra de Crimea.", 
      "imagen": null, 
      "video": null, 
      "duracion": 10 
     } 
    ] 
} 

}

편집을 : 나는 아마 사전에서 정적을 취할 필요가있다. "JSON 배열이 필요하기 때문에 현재의 JSON 객체 (예 : {"name ":"value "})를 'System.Object []'유형으로 역 직렬화 할 수 없습니다 (예 : [1, 2,3])를 올바르게 deserialize하십시오. "

+0

참고로 [마이크로 소프트 문서에 CS0176] (https : //로 문서를 .microsoft.com/ko-ko/dotnet/articles/csharp/misc/cs0176) –

+0

역 직렬화는 어떻게 soportes에서 빌드 할 개체 유형을 알 수 있습니까? 아마도 Dictionary 을 사용해야하고 사용하고자하는 것이면 무엇이든 사용할 수 있습니다. 또한 왜 soportes를 정적으로 사용하는지 궁금합니다. –

+0

사전에서 STATIC을 제거하면 직렬화 해제 문제가 발생합니다. "유형에 JSON 배열이 필요하기 때문에 현재 JSON 객체 (예 : {"name ":"value "})를 'System.Object []'유형으로 역 직렬화 할 수 없습니다. (예 : [1,2,3])을 올바르게 직렬화 해제하십시오. " –

답변

0

이 시도 - 나 코드를 실행하기위한 작동합니다 (당신은 유형에 지정된 객체 배열을 않은 이유는 무엇입니까?)

public Dictionary<int, object> soportes { get; set; } 
+0

좋아, 구문 분석을하지 않습니다. 오류가 발생하지만 soportes에 저장된 값에 어떻게 액세스합니까? 나는 'Aviso [] misAvisos = (Aviso []) curContent.soportes [2];를 시도했다. 그러나 "Newtonsoft.Json.Linq.JArray"를 'CreativaTV.Aviso []'로 변환 할 수는 없습니다. –

+0

http://www.newtonsoft.com/json/help/html/ToObjectType.htm이 한 가지 방법입니다. –