Búsqueda de sitios web

javascript - ¿Cómo representar JSON anidado en clases de Angular?


Recibo este JSON de un servidor:

"Body": {
    "ErrorsContent": {
        "FunctionalError": [
            {
                "Code": "110900",
                "Error": "xx",
                "Position": "xx",
                "Value": ""
            },
            {
                "Code": "110900",
                "Error": "xx",
                "Position": "xx",
                "Value": ""
            },
            {
                "Code": "110900",
                "Error": "xx",
                "Position": "xx",
                "Value": ""
            },
            {
                "Code": "110902",
                "Error": "xx",
                "Position": "xx",
                "Value": ""
            },
            {
                "Code": "110900",
                "Error": "xx",
                "Position": "xx",
                "Value": ""
            }
        ]
    }
}

Necesito que se analice a un objeto de Angular, así que creé un par de clases:

export class Body{
    public ErrorsContent: ErrorsContent;
}

class ErrorsContent{
    public FunctionalError: FunctionalError;
}

class FunctionalError{
    public Code: any;
    public Error: any;
    public Position: any;
    public Value: any;
}

Pero esto no funciona bien cuando tengo más de un FuntionalError.

¿Cómo puedo configurar la clase FuntionalError para poder tener más de un error sin ser una clase en sí misma?

¡Cualquier consejo es bienvenido! Gracias.

Respuesta #1

Cambia tu clase ErrorsContent a

class ErrorsContent{
    public FunctionalError: FunctionalError[];//it should be array 
}

Respuesta #2

FunctionalError es un array. Lo estás declarando como un object.

Usar

class ErrorsContent {
    public FunctionalError: FunctionalError[];
}

en lugar de

class ErrorsContent {
    public FunctionalError: FunctionalError;
}

Puedes usar cualquier herramienta en línea para convertir la respuesta JSON del servidor a clases TS. Ej: jsontots, json2ts, etc.