Your additions to the field names need to have brackets around them
<input type="text" name="<?php echo esc_attr($field['name']) ?>[image]" id="image_url"
class="regular-text"
value="<?php echo esc_attr($field['value']['image']) ?>">
echo '<input type="text" id="pin_json" name="' . esc_attr($field['name']) . '[json]' . '" value="' . esc_attr($field['value']['json']) . '" /> ';
I’m not sure what the results of not having them would be, more than likely your field name in the form looks something like FIELDNAMEimage
which is a completely different name than you expect it to be.