## Step 1: Define the symbolic representation of the problem

Let's define the symbolic variables:
- $x_1$ = number of cups of coffee
- $x_2$ = number of cups of tea

The objective function is to maximize profit: $1x_1 + 2x_2$

The constraints are:
- $5x_1 + 3x_2 \leq 500$ (time constraint)
- $x_1 + x_2 \leq 300$ (total cups constraint)
- $x_1 \geq 0$ and $x_2 \geq 0$ (non-negativity constraints)

## Step 2: Convert the problem into a Gurobi code

We will use the Gurobi library in Python to solve this linear programming problem.

## Step 3: Write the Gurobi code

```python
import gurobi

# Create a new model
model = gurobi.Model()

# Define the variables
x1 = model.addVar(name="coffee", lb=0)
x2 = model.addVar(name="tea", lb=0)

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

# Add constraints
model.addConstr(x1 + x2 <= 300, name="total_cups")
model.addConstr(5*x1 + 3*x2 <= 500, name="time_constraint")

# Optimize the model
model.optimize()

# Print the solution
if model.status == gurobi.GRB.OPTIMAL:
    print("Optimal solution:")
    print(f"Cups of coffee: {x1.varValue}")
    print(f"Cups of tea: {x2.varValue}")
    print(f"Max profit: {model.objVal}")
else:
    print("No optimal solution found")
```

## Step 4: Provide the symbolic representation in JSON format

```json
{
    'sym_variables': [('x1', 'cups of coffee'), ('x2', 'cups of tea')],
    'objective_function': '1*x1 + 2*x2',
    'constraints': [
        '5*x1 + 3*x2 <= 500',
        'x1 + x2 <= 300',
        'x1 >= 0',
        'x2 >= 0'
    ]
}
```

The final answer is: 

```python
import gurobi

# Create a new model
model = gurobi.Model()

# Define the variables
x1 = model.addVar(name="coffee", lb=0)
x2 = model.addVar(name="tea", lb=0)

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

# Add constraints
model.addConstr(x1 + x2 <= 300, name="total_cups")
model.addConstr(5*x1 + 3*x2 <= 500, name="time_constraint")

# Optimize the model
model.optimize()

# Print the solution
if model.status == gurobi.GRB.OPTIMAL:
    print("Optimal solution:")
    print(f"Cups of coffee: {x1.varValue}")
    print(f"Cups of tea: {x2.varValue}")
    print(f"Max profit: {model.objVal}")
else:
    print("No optimal solution found")
```