Repository: googleapis/google-cloud-go (Go)

Issue:
cloud.google.com/go/bigquery/storage/managedwriter/adapt: Marshalling fails if upper case present in JSON keys
**Client**

cloud.google.com/go/bigquery/storage/managedwriter/adapt

**Environment**

local unit tests

**Go Environment**

$ go version
go version go1.20.6 linux/amd64

**Code**

```go
package main

import (
	"encoding/json"
	"fmt"

	"cloud.google.com/go/bigquery"
	"cloud.google.com/go/bigquery/storage/managedwriter/adapt"
	"google.golang.org/protobuf/encoding/protojson"
	"google.golang.org/protobuf/proto"
	"google.golang.org/protobuf/reflect/protodesc"
	"google.golang.org/protobuf/reflect/protoreflect"
	"google.golang.org/protobuf/types/descriptorpb"
	"google.golang.org/protobuf/types/dynamicpb"
)

type Foo struct {
	FooID string `json:"fooID"`
}

func main() {
	s, err := bigquery.InferSchema(Foo{})
	if err != nil {
		panic(err)
	}
	md, _ := setupDynamicDescriptors(s)

	message := dynamicpb.NewMessage(md)

	f := Foo{FooID: "1"}
	bb, err := json.Marshal(f)
	if err != nil {
		panic(err)
	}

	err = protojson.Unmarshal(bb, message)
	if err != nil {
		panic(fmt.Errorf("failed to Unmarshal json message for: %v", err))
	}

	_, err = proto.Marshal(message)
	if err != nil {
		panic(fmt.Errorf("failed to marshal proto bytes for row : %v", err))
	}
}

func setupDynamicDescriptors(schema bigquery.Schema) (protoreflect.MessageDescriptor, *descriptorpb.DescriptorProto) {
	convertedSchema, err := adapt.BQSchemaToStorageTableSchema(schema)
	if err != nil {
		panic(fmt.Errorf("adapt.BQSchemaToStorageTableSchema: %v", err))
	}

	descriptor, err := adapt.StorageSchemaToProto2Descriptor(convertedSchema, "root")
	if err != nil {
		panic(fmt.Errorf("adapt.StorageSchemaToDescriptor: %v", err))
	}

	messageDescriptor, ok := descriptor.(protoreflect.MessageDescriptor)
	if !ok {
		panic(fmt.Errorf("adapted descriptor is not a message descriptor"))
	}

	return messageDescriptor, protodesc.ToDescriptorProto(messageDescriptor)
}
```

**Expected behavior**

Unmarshalling to work as expected on line 38

**Actual behavior**

Unmarshalling fails 
```
panic: failed to Unmarshal json message for: proto: (line 1:2): unknown field "fooID"

goroutine 1 [running]:
main.main()
        ./bqbug/main.go:38 +0x219
exit status 2
```

**Additional context**

It seems this package does not support upper casing in the json keys.  Removing the toLower here might be enough to fix it. 
https://github.com/googleapis/google-cloud-go/blob/main/bigquery/storage/managedwriter/adapt/protoconversion.go#L290



Fix (patch):
diff --git a/bigquery/storage/managedwriter/adapt/protoconversion.go b/bigquery/storage/managedwriter/adapt/protoconversion.go
index 808dbade3b61..997a7edd1503 100644
--- a/bigquery/storage/managedwriter/adapt/protoconversion.go
+++ b/bigquery/storage/managedwriter/adapt/protoconversion.go
@@ -286,8 +286,7 @@ func storageSchemaToDescriptorInternal(inSchema *storagepb.TableSchema, scope st
 //
 // Messages are always nullable, and repeated fields are as well.
 func tableFieldSchemaToFieldDescriptorProto(field *storagepb.TableFieldSchema, idx int32, scope string, useProto3 bool) (*descriptorpb.FieldDescriptorProto, error) {
-
-	name := strings.ToLower(field.GetName())
+	name := field.GetName()
 	var fdp *descriptorpb.FieldDescriptorProto
 
 	if field.GetType() == storagepb.TableFieldSchema_STRUCT {