Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

299
Vistas
¿Cómo puedo guardar como json esa variable definida como clase base?

Estoy buscando cómo guardar la variable que se definió como clase base en json.

 [Serializable] class DataFile { public Node root; public void Save() { ParentNode root = new ParentNode(); root.m_Childs = new Node[2](); root.m_Name = "Root"; ParentNode node0 = new ParentNode(); ParentNode node1 = new ParentNode(); node0.m_Name = "Node0"; node1.m_Name = "Node1"; root.m_Childs[0] = node0; root.m_Childs[1] = node1; JSonUtility.ToJson(this); } } [Serializable] class Node { public string m_Name; } [Serializable] class ParentNode : Node { public Node[] m_Childs; }

El JsonUtility resultante con el código anterior solo almacena m_Name de root y m_Childs no.

¿Cómo puedo averiguarlo?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Cuando serializas, estás serializando el valor de

 public Node root;

que solo tiene un

 public string m_Name;

no la variable local

 ParentNode root = new ParentNode();

Además, el (des) serializador utilizará el tipo que le proporcione, no el tipo que podría ser por herencia. El único tipo conocido por DataFile es Node , por lo que solo serializará campos conocidos por ese tipo. Y el único tipo conocido por ParentNode son los hijos de tipo Node . Si necesita almacenar la información contenida en un ParentNode , ¡tendrá que usar campos de ese tipo en su lugar!


Supongo que tal vez debería ser más bien

 [Serializable] class DataFile { public ParentNode root; public void Save() { var node0 = new ParentNode{ m_Name = "Node0" }; var node1 = new ParentNode{ m_Name = "Node1" }; root = new ParentNode{ m_Name = "Root", m_Childs = new[]{node0, node1} }; JSonUtility.ToJson(this); } } [Serializable] class Node { public string m_Name; } [Serializable] class ParentNode : Node { // Again the only type known to ParentNode is childs of type Node // if you need ParentNode then the type has to be that also in the // ParentNode class public ParentNode[] m_Childs; }
over 4 years ago · Santiago Trujillo Denunciar

0

Al igual que con otras bibliotecas json, la utilidad Json, que Unity proporciona de manera predeterminada, no pudo determinar qué tipo de contenido se almacenó cuando se cargó desde json. Decidí usar un objeto programable, pero si realmente desea usar Json Utility, puede usar ISerializationCallbackReceiver para hacer comandos antes y después de la serialización de Json.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda