Working with a json feed & trying to figure out how best to import

You could use a combination of update_post_meta(), set_objetc_terms(), and wp_update_post() to update your products. It is a good idea to use taxonomies (product categories and product attributes in WooC) as extensively as possible to store common product data as it makes searching for products faster compared to storing the data in post_meta.

Here’s a concept of a product updater that might do the trick. This is naturally untested and requires you to fill in the details.

If there are hundreds or thousands of products that needs to be updated every time, then I’m not sure, if this the most performant way of doing the update. Maybe splitting the update into batches (saved as transients maybe) and executing the batches with a (real) cronjob would help.

foreach ( $products_from_decoded_json as $product_data_array ) {
  product_updater( $product_data_array );
}

function product_updater( array $product_data ) {

  $meta = array(
    'Price' => '_price',
    // rest of the meta_key mappings
    // where json_key => WP meta_key
  );

  $terms = array(
    'Make' => 'pa_make',
    'Type' => 'product_category',
    // rest of product taxonomy mappings
    // where json_key => WP taxonomy_slug
  );

  $product_id = get_product_id( $product_data );

  update_product_meta( $product_id, $meta, array_filter( $product_data, function($key) {
    return isset( $meta[$key] );
  }, ARRAY_FILTER_USE_KEY ) );

  update_product_terms( $product_id, $terms, array_filter( $product_data, function($key) {
    return isset( $terms[$key] );
  }, ARRAY_FILTER_USE_KEY ) );

  // Check params array params from wp_insert_post docs
  wp_update_post( array(
    'ID' => $product_id,
    'post_content' => $product_data['Description'],
    'post_excerpt' => $product_data['Summary'],
    'post_modified' => $product_data['Modified'],
  ) );

}

function get_product_id( $data ) {
  // Returned value should match an existing post ID
  // return int $id;
}

function update_product_meta( int $id, array $meta, array $product_data ) {
  foreach ( $meta as $json_key => $meta_key ) {
    // update_post_meta( $post_id, $meta_key, $meta_value, $prev_value="" )
    update_post_meta( $id, $meta_key, $product_data[$json_key] );
  }
}

function update_product_terms( int $id, array $meta, array $product_data ) {
  foreach ( $terms as $json_key => $taxonomy ) {
    // get_term_by( $field, $value, $taxonomy, $output = OBJECT, $filter="raw" )
    $term_data = get_term_by( 'name', $product_data[$json_key], $taxonomy );
    if ( $term_data ) {
      // wp_set_object_terms( $object_id, $terms, $taxonomy, $append = false )
      wp_set_object_terms( $id, $term_data->term_id, $taxonomy, false );
    }
  }
}