**Describe what's wrong**

It's not possible to use digit as tuple name, so it's not possible to parse JSON files to nested tuple structure with JSONExtract.

**Does it reproduce on recent release?**

Yes

ClickHouse 21.12


**How to reproduce**
```
WITH
    '{"1":{"key":"value"}}' AS data,
    JSONExtract(data, 'Tuple("1" Tuple(key String))') AS parsed_json
SELECT parsed_json AS ssid

Query id: 5bc7b6cf-155a-421c-ac20-f3be09bd9692


0 rows in set. Elapsed: 0.003 sec.

Received exception from server (version 21.12.1):
Code: 36. DB::Exception: Received from localhost:9000. DB::Exception: Explicitly specified names of tuple elements cannot start with digit: While processing JSONExtract('{"1":{"key":"value"}}' AS data, 'Tuple("1" Tuple(key String))') AS ssid. (BAD_ARGUMENTS)
```

**Expected behavior**

It's possible to parse JSON with digit keys.


{
    if (!arguments || arguments->children.empty())
        throw Exception("Tuple cannot be empty", ErrorCodes::EMPTY_DATA_PASSED);
    DataTypes nested_types;
    nested_types.reserve(arguments->children.size());
    Strings names;
    names.reserve(arguments->children.size());
    for (const ASTPtr & child : arguments->children)
    {
        if (const auto * name_and_type_pair = child->as<ASTNameTypePair>())
        {
            nested_types.emplace_back(DataTypeFactory::instance().get(name_and_type_pair->type));
            names.emplace_back(name_and_type_pair->name);
        }
        else
            nested_types.emplace_back(DataTypeFactory::instance().get(child));
    }
    if (names.empty())
        return std::make_shared<DataTypeTuple>(nested_types);
    else if (names.size() != nested_types.size())
        throw Exception("Names are specified not for all elements of Tuple type", ErrorCodes::BAD_ARGUMENTS);
    else
        return std::make_shared<DataTypeTuple>(nested_types, names);
}
void registerDataTypeTuple(DataTypeFactory & factory)
{
    factory.registerDataType("Tuple", create);
}
}