## Step 1: Define the symbolic representation of the variables
The variables are 'corn cobs' and 'protein bars', which we can denote as $x_1$ and $x_2$ respectively.

## Step 2: Convert the objective function into a symbolic representation
The objective function to maximize is $4x_1 + 4x_2$.

## Step 3: Define the constraints in symbolic notation
The constraints given are:
1. $14x_1 + 19x_2 \geq 26$
2. $6x_1 - 9x_2 \geq 0$
3. $14x_1 + 19x_2 \leq 66$
4. $x_1$ can be fractional, $x_2$ must be an integer.

## 4: Represent the problem in the required JSON format
```json
{
    'sym_variables': [('x1', 'corn cobs'), ('x2', 'protein bars')],
    'objective_function': '4*x1 + 4*x2',
    'constraints': [
        '14*x1 + 19*x2 >= 26',
        '6*x1 - 9*x2 >= 0',
        '14*x1 + 19*x2 <= 66'
    ]
}
```

## 5: Implement the optimization problem using Gurobi
We will use the Gurobi Python API to model and solve this optimization problem.

```python
import gurobi

def solve_optimization_problem():
    # Create a new Gurobi model
    model = gurobi.Model()

    # Define the variables
    x1 = model.addVar(name="corn_cobs", lb=0)  # corn cobs can be fractional
    x2 = model.addVar(name="protein_bars", lb=0, integrality=gurobi.GRB.INTEGER)  # protein bars must be an integer

    # Define the objective function
    model.setObjective(4*x1 + 4*x2, gurobi.GRB.MAXIMIZE)

    # Define the constraints
    model.addConstr(14*x1 + 19*x2 >= 26, name="min_spend")
    model.addConstr(6*x1 - 9*x2 >= 0, name="min_corn_cobs")
    model.addConstr(14*x1 + 19*x2 <= 66, name="max_spend")

    # Update the model
    model.update()

    # Solve the model
    model.optimize()

    # Check if the model is optimized
    if model.status == gurobi.GRB.OPTIMAL:
        print("Optimal solution found.")
        print(f"Corn cobs: {x1.varValue}")
        print(f"Protein bars: {x2.varValue}")
        print(f"Objective: {model.objVal}")
    elif model.status == gurobi.GRB.INFEASIBLE:
        print("The model is infeasible.")
    else:
        print("The model has a non-optimal status.")

solve_optimization_problem()
```