I've not a big familiarity with JavaScript. My aims is to pass one or more values in a function for read a JSON. When I use the code below I see this error:
ReferenceError: json is not defined
let vectorsLayerAPI = function(
  vectorType,
  urlAPI,
  vectorsLayerName
){
  this.vectorType = vectorType;
  this.urlAPI = urlAPI;
  this.vectorsLayerName = vectorsLayerName;
  let layerVectorAPI;
  return {
    'createVectorAPI': function(
      attr,
    ){
      this.attr = attr;
      // Build the vector
      layerVector = new ol.layer.Vector({
        title: vectorsLayerName,
        source: new ol.source.Vector(),
      });
      async function getFeatureProperties() {
        try {
          let response = await fetch(urlAPI);
          if (!response.ok) {
            throw new Error(`HTTP error!\n Status: ${response.status}\n Type: ${response.type}\n URL: ${response.url}`);
          } else {
            let data = await response.text();
            if (attr !== null) {
              console.log(attr);
              let json = JSON.parse(data)[attr];
            } else {
              console.log(attr);
              let json = JSON.parse(data)
            }
            const features = new ol.format.GeoJSON({
              dataProjection: 'EPSG:4326',
              featureProjection: 'EPSG:3857'
            }).readFeatures(json);
            layerVector.getSource().addFeatures(features);
          }
        } catch (e) {
          console.log(e);
        }
      }
      getFeatureProperties();
      return layerVector;
    },
  };
};
But I haven't problem when I use this code:
let vectorsLayerAPI = function(
  vectorType,
  urlAPI,
  vectorsLayerName
){
  this.vectorType = vectorType;
  this.urlAPI = urlAPI;
  this.vectorsLayerName = vectorsLayerName;
  let layerVectorAPI;
  return {
    'createVectorAPI': function(){
      // Build the vector
      layerVector = new ol.layer.Vector({
        title: vectorsLayerName,
        source: new ol.source.Vector(),
      });
      async function getFeatureProperties() {
        try {
          let response = await fetch(urlAPI);
          if (!response.ok) {
            throw new Error(`HTTP error!\n Status: ${response.status}\n Type: ${response.type}\n URL: ${response.url}`);
          } else {
            let data = await response.text();
            let json = JSON.parse(data)["stop_point"];
            const features = new ol.format.GeoJSON({
              dataProjection: 'EPSG:4326',
              featureProjection: 'EPSG:3857'
            }).readFeatures(json);
            layerVector.getSource().addFeatures(features);
          }
        } catch (e) {
          console.log(e);
        }
      }
      getFeatureProperties();
      return layerVector;
    },
  };
};
This snippets are based on OpenLayers 6 with which I'm developing my custom library.
 
    