Карта JSON в Angular 9 - PullRequest
       1

Карта JSON в Angular 9

0 голосов
/ 18 июня 2020

Я разработал приложение, использующее Angular, которое связано с БД с помощью backEnd, созданного с помощью ASP.NET. Моя проблема в том, что мой JSON во Front немного отличается от JSON в backEnd. И мне нужна помощь в том, как сопоставить frontEnd JSON, чтобы отправить его на backEnd.

psd: я создал все интерфейсы на внешнем интерфейсе, и я использую formControls и FormArrays для хранения данных в спереди проблема в том, что de JSON немного другие. Я не могу изменить JSON на backEnd, потому что он связан с БД и имеет PK и FK, так что это причина, потому что это немного другое. Я думал о том, чтобы сделать что-то вроде this.myform.value и сопоставить с другим интерфейсом, но я понятия не имею, как это сделать, потому что у меня есть массив массивов ... Может быть, для l oop?

Вот мой frontEnd JSON:

{
  "non-array fields....................." : "bla bla",
  "arraySustancias": [
    {
      "sustanciaActiva": "hello",
      "contenido": "2",
      "suministro": ["hello2","hello3"],
      "unidades": "3"
    }
  ],


      "arrayProcedimientos": [
    {
      "procedimiento": "",
      "fechaInicioProcedimiento": "",
      "fechaFinProcedimiento": "",
      "notasProcedimiento": "",
      "arraySubprocedimientos": [
        {
          "subprocedimiento": "",
          "fechaInicioSubProcedimiento": "",
          "fechaFinSubProcedimiento": "",
          "notasSubProcedimiento": "",
          "exp": ""
        }
      ]
    }
  ]
}

А вот мой backEnd JSON:

{
  "non-array fields.....................": "bla bla",
  "registros_arraySustancias": [
    {
      "registros_arraySustancias_suministro": [
        {
          "registros_arraySustancias_id": "",
          "id": "",
          "value": [
            "ABBOTT LABORATORIES",
            "ADAMA Agan Ltd."
          ]
        }
      ],
      "registros_id": "",
      "id": "",
      "sustanciaActiva": "hola",
      "contenido": 2,
      "unidades": 3
    }
  ],
  "registros_arrayProcedimientos": [
    {
      "registros_id": "",
      "id": "",
      "procedimiento": "text",
      "fechaInicioProcedimiento": "18/06/2020",
      "fechaFinProcedimiento": "18/06/2020",
      "notasProcedimiento": "notes",
      "registros_arrayProcedimientos_arraySubprocedimientos": [
        {
          "registros_arrayProcedimientos_id": "",
          "id": "",
          "subprocedimiento": "text",
          "fechaInicioSubProcedimiento": "19/06/2020",
          "fechaFinSubProcedimiento": "19/06/2020",
          "notasSubProcedimiento": "notes"
        }
      ]
    }
  ]
}

Спасибо за вашу помощь :)

Ответы [ 3 ]

1 голос
/ 18 июня 2020

В этом случае, я думаю, вам нужно немного поработать с формами angular, чтобы данные из внешнего интерфейса были из той же структуры. FormGroups и FormArayys вам очень помогут. Попробуйте также взглянуть на эту статью. http://www.howilearnt.com/web-development/angular/make-a-json-object-with-angular-forms/

0 голосов
/ 18 июня 2020

Это именно то, что я искал:

mapeado = {
pais: "",
registros_arraySustancias: [{
unidades: "",
contenido: 2,
sustanciaActiva: "",
registros_arraySustancias_suministro: [{value: [""]}]
}
]
}

Большое спасибо за вашу помощь

0 голосов
/ 18 июня 2020

Вы просто создаете объект из своего исходного объекта. Не существует способа c или автоматического c сделать это. Пример:

interface OriginalData {
    foo: string;
    baz: {
        test: number[]
    };
}

interface MyData {
    foobar: string;
    bazTest: number[];
}

function getData(): Observable<OriginalData> {
  return this.http.get<OriginalData>(url);
}

function convertData(original: OriginalData): MyData {
    const res: MyData = {
        foobar: original.foo,
        bazTest: original.baz.test
    };

    return res;
}

// somewhere in your code
getData().subscribe(
    v => sendData(convertData(v))
);

Я использую здесь http-клиент Angular, потому что вы добавили тег «angular». Он предоставит вам объект указанного вами типа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...