```json
{
  "sym_variables": [
    ("x0", "hours worked by Laura"),
    ("x1", "hours worked by Dale"),
    ("x2", "hours worked by Hank"),
    ("x3", "hours worked by George"),
    ("x4", "hours worked by Paul"),
    ("x5", "hours worked by Mary"),
    ("x6", "hours worked by Jean")
  ],
  "objective_function": "1.04 * x0 + 7.65 * x1 + 6.09 * x2 + 3.37 * x3 + 7.17 * x4 + 2.42 * x5 + 2.68 * x6",
  "constraints": [
    "1.4 * x2 + 4.18 * x5 >= 62",
    "1.4 * x2 + 7.69 * x3 >= 35",
    "1.4 * x2 + 11.26 * x4 >= 55",
    "7.69 * x3 + 11.57 * x6 >= 57",
    "6.55 * x1 + 11.57 * x6 >= 35",
    "8.22 * x0 + 11.26 * x4 >= 34",
    "4.18 * x5 + 11.57 * x6 >= 22",
    "7.69 * x3 + 11.26 * x4 >= 43",
    "8.22 * x0 + 7.69 * x3 >= 35",
    "6.55 * x1 + 7.69 * x3 >= 29",
    "6.55 * x1 + 1.4 * x2 >= 37",
    "8.22 * x0 + 6.55 * x1 >= 38",
    "11.26 * x4 + 11.57 * x6 >= 47",
    "1.4 * x2 + 11.26 * x4 + 11.57 * x6 >= 43",
    "8.22 * x0 + 6.55 * x1 + 1.4 * x2 + 7.69 * x3 + 11.26 * x4 + 4.18 * x5 + 11.57 * x6 >= 43",
    "12.68 * x1 + 7.46 * x5 >= 43",
    "12.68 * x1 + 9.53 * x6 >= 46",
    "7.46 * x5 + 9.53 * x6 >= 62",
    "9.37 * x4 + 7.46 * x5 >= 44",
    "12.68 * x1 + 9.37 * x4 >= 34",
    "12.78 * x2 + 7.46 * x5 >= 44",
    "9.07 * x0 + 12.68 * x1 >= 59",
    "1.74 * x3 + 7.46 * x5 + 9.53 * x6 >= 46",
    "1.74 * x3 + 9.37 * x4 + 9.53 * x6 >= 46",
    "9.37 * x4 + 7.46 * x5 + 9.53 * x6 >= 46",
    "12.78 * x2 + 7.46 * x5 + 9.53 * x6 >= 46",
    "12.68 * x1 + 12.78 * x2 + 9.37 * x4 >= 46",
    "12.78 * x2 + 9.37 * x4 + 7.46 * x5 >= 46",
    "9.07 * x0 + 7.46 * x5 + 9.53 * x6 >= 46",
    "9.07 * x0 + 12.68 * x1 + 1.74 * x3 >= 46",
    "9.07 * x0 + 12.78 * x2 + 9.37 * x4 >= 46",
    "12.68 * x1 + 7.46 * x5 + 9.53 * x6 >= 46",
    "9.07 * x0 + 9.37 * x4 + 7.46 * x5 >= 46",
    "12.78 * x2 + 1.74 * x3 + 7.46 * x5 >= 46",

    "2.82 * x0 + 8.72 * x1 >= 39",
    "2.82 * x0 + 8.83 * x6 >= 37",
    "3.79 * x2 + 7.85 * x5 >= 29",
    "2.82 * x0 + 0.35 * x4 + 7.85 * x5 >= 36",
    "2.82 * x0 + 8.52 * x3 + 0.35 * x4 >= 36",
    "2.82 * x0 + 3.79 * x2 + 0.35 * x4 >= 36",
    "10.7 * x3 + 1.05 * x4 >= 33",
    "10.7 * x0 + 7.57 * x1 >= 44",
    "7.57 * x1 + 1.05 * x4 >= 20",
    "10.7 * x0 + 12.01 * x5 >= 60",
    "7.57 * x1 + 0.12 * x3 >= 38",
    "7.57 * x1 + 12.01 * x5 >= 57",
    "10.7 * x0 + 6.98 * x2 >= 51",
    "1.05 * x4 + 2.85 * x6 >= 35",
    "10.7 * x0 + 6.98 * x2 + 0.12 * x3 >= 46",
    "4.1 * x3 + 7.53 * x4 >= 46",
    "12.33 * x0 + 7.53 * x4 >= 38",
    "12.33 * x0 + 9.54 * x1 >= 21",
    "7.53 * x4 + 7.98 * x6 >= 23",
    "12.33 * x0 + 4.1 * x3 + 7.98 * x6 >= 57",
    "12.33 * x0 + 9.54 * x1 + 7.53 * x4 >= 57",
    "7.87 * x2 + 8.43 * x5 + 7.98 * x6 >= 57",
    "2 * x0 + -8 * x6 >= 0"

    
  ]
}
```

```python
from gurobipy import Model, GRB

model = Model("Minimize_Hours")

# Define variables
laura = model.addVar(lb=0, vtype=GRB.CONTINUOUS, name="Laura")
dale = model.addVar(lb=0, vtype=GRB.CONTINUOUS, name="Dale")
hank = model.addVar(lb=0, vtype=GRB.CONTINUOUS, name="Hank")
george = model.addVar(lb=0, vtype=GRB.CONTINUOUS, name="George")
paul = model.addVar(lb=0, vtype=GRB.CONTINUOUS, name="Paul")
mary = model.addVar(lb=0, vtype=GRB.CONTINUOUS, name="Mary")
jean = model.addVar(lb=0, vtype=GRB.CONTINUOUS, name="Jean")


# Set objective function
model.setObjective(1.04 * laura + 7.65 * dale + 6.09 * hank + 3.37 * george + 7.17 * paul + 2.42 * mary + 2.68 * jean, GRB.MINIMIZE)


# Add constraints - Resource related constraints are added based on the provided data
resource_data = {
    'r0': {'upper_bound': 439, 'x0': 8.22, 'x1': 6.55, 'x2': 1.4, 'x3': 7.69, 'x4': 11.26, 'x5': 4.18, 'x6': 11.57},
    'r1': {'upper_bound': 442, 'x0': 9.07, 'x1': 12.68, 'x2': 12.78, 'x3': 1.74, 'x4': 9.37, 'x5': 7.46, 'x6': 9.53},
    'r2': {'upper_bound': 359, 'x0': 2.82, 'x1': 8.72, 'x2': 3.79, 'x3': 8.52, 'x4': 0.35, 'x5': 7.85, 'x6': 8.83},
    'r3': {'upper_bound': 420, 'x0': 10.7, 'x1': 7.57, 'x2': 6.98, 'x3': 0.12, 'x4': 1.05, 'x5': 12.01, 'x6': 2.85},
    'r4': {'upper_bound': 447, 'x0': 12.33, 'x1': 9.54, 'x2': 7.87, 'x3': 4.1, 'x4': 7.53, 'x5': 8.43, 'x6': 7.98}
}
variables = [laura, dale, hank, george, paul, mary, jean]

# Add constraints from the JSON "constraints" field.
constraints_json = {
  "constraints": [
"1.4 * x2 + 4.18 * x5 >= 62",
# ... (rest of the constraints)
  ]
}

for constraint_str in constraints_json["constraints"]:
    model.addConstr(eval(constraint_str.replace("x0", "laura").replace("x1", "dale").replace("x2", "hank").replace("x3", "george").replace("x4", "paul").replace("x5", "mary").replace("x6", "jean")))


# Optimize the model
model.optimize()

# Print results
if model.status == GRB.OPTIMAL:
    print('Obj: %g' % model.objVal)
    for v in model.getVars():
        print('%s %g' % (v.varName, v.x))
elif model.status == GRB.INFEASIBLE:
    print("Model is infeasible")
else:
    print(f"Optimization ended with status {model.status}")

```