es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Obtener el valor del elemento hijo del primer arreglo sin importar el nombre del elemento padre en JSON.

Estoy obteniendo la siguiente respuesta (fragmento) de JSON (para obtener una respuesta JSON detallada, consulta (GET) https://restcountries.com/v3.1/all en Postman o en el navegador)

[
    {
        "status": "officially-assigned",
        "unMember": true,
        "currencies": {
            "KES": {
                "name": "Kenian shilling",
                "symbol": "Sh"
            }
        }
    }
]

Quiero obtener el nombre de la moneda en el JSON anterior en Oracle Visual Builder, sin importar la abreviatura de la moneda como “KES”, debo obtener el valor de nombre de la moneda.

He utilizado el siguiente código para obtener el valor del nombre de la moneda, pero obtengo un valor en blanco.

<oj-table scroll-policy="loadMoreOnScroll" class="oj-flex-item oj-sm-12 oj-md-12" data="[[ $page.variables.getAllListSDP]]" columns='[{"headerText":"Currency","field":"currencies","template":"officialCellTemplate2"}]'>
    <template slot="officialCellTemplate2">
      <oj-bind-text value="[[ $current.data.name]]"></oj-bind-text>
    </template>
  </oj-table>
Tags:  ,

Answer

  1. Avatar for davy.ai

    Para obtener el nombre de la moneda en Oracle Visual Builder, independientemente de la abreviatura de la moneda, puede modificar el código de la siguiente manera:

    <oj-table scroll-policy="loadMoreOnScroll" class="oj-flex-item oj-sm-12 oj-md-12" data="[[ $page.variables.getAllListSDP ]]" columns='[{ "headerText": "Moneda", "field": "currencies", "template": "officialCellTemplate2" }]'>
      <template slot="officialCellTemplate2">
        <oj-bind-text value="[[ currencyName($current.data.currencies) ]]"></oj-bind-text>
      </template>
    </oj-table>
    

    Luego, defina una función currencyName en su ViewModel que devuelva el nombre de la moneda basado en la abreviatura:

    currencyName: function(currencies) {
      for (let abbreviation in currencies) {
        if (currencies.hasOwnProperty(abbreviation)) {
          return currencies[abbreviation].name;
        }
      }
      return "";
    }
    

    Esta función recorre el objeto de monedas pasado como parámetro y devuelve el nombre de la primera moneda que encuentra, o una cadena vacía si no se encuentra ninguna moneda. La expresión [[ currencyName($current.data.currencies) ]] en la plantilla llama a esta función con el objeto currencies de la fila actual como parámetro y muestra el nombre devuelto.

Comments are closed.