이 수업이 있습니다.
class SoporteFile
{
public Evento[] eventos { get; set; }
public Programacion[] programaciones { get; set; }
public static Dictionary<int, object[]> soportes { get; set; }
}
그런 다음 Soporte가 있습니다.
class Soporte
{
public Aviso[] avisos { get; set; }
public Placa[] placas { get; set; }
public Portada[] portadas { get; set; }
public Efemeride[] efemerides { get; set; }
public Comunicado[] comunicados { get; set; }
}
SoporteFile의 Dictionary 클래스는 Soporte 클래스와 일치해야합니다. soportes [0]에는 Aviso 배열이 있어야하고, soportes [1]에는 Placa 배열이 있어야합니다. Json.NET으로 구문 분석 할 때 Dictionary soportes와 Soporte 클래스간에 관계가 없더라도 오류가 발생하지 않는 것 같습니다. 파싱을 잘하기 위해서 (그 것인지 모르겠습니다),하지만 다음과 같이 Dictionary soportes에 접근하려고 할 때 (먼저 deserialize) :
SoporteFile curContent = JsonConvert.DeserializeObject<SoporteFile>(File.ReadAllText(curFolder + @"/Contenido.json"));
curContent.soportes[0]
오류가 발생합니다 (오류 CS0176 Member는 인스턴스 참조로 액세스 할 수 없습니다. 대신 형식 이름으로 한정). 그리고 이렇게하면 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 개체 (예 : {"name ":"value "})를 'System.Object []'형식으로 역 직렬화 할 수 없습니다. 형식에 JSON 배열 (예 : [1, 2,3]) 올바르게 역 직렬화합니다. "
이것을 시도하십시오-귀하의 코드를 실행하는 데 적합합니다. (왜 유형에 객체 배열을 지정 했습니까?)
public Dictionary<int, object> soportes { get; set; }
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다