diff --git a/lib/go/thrift/duplicate_protocol.go b/lib/go/thrift/duplicate_protocol.go
index 6413909..a9eb7eb 100644
--- a/lib/go/thrift/duplicate_protocol.go
+++ b/lib/go/thrift/duplicate_protocol.go
@@ -198,6 +198,10 @@
 
 func (tdtp *TDuplicateToProtocol) ReadFieldBegin(ctx context.Context) (name string, typeId TType, id int16, err error) {
 	name, typeId, id, err = tdtp.Delegate.ReadFieldBegin(ctx)
+	if typeId == STOP {
+		tdtp.DuplicateTo.WriteFieldStop(ctx)
+		return
+	}
 	tdtp.DuplicateTo.WriteFieldBegin(ctx, name, typeId, id)
 	return
 }
diff --git a/lib/go/thrift/duplicate_protocol_test.go b/lib/go/thrift/duplicate_protocol_test.go
new file mode 100644
index 0000000..6674f04
--- /dev/null
+++ b/lib/go/thrift/duplicate_protocol_test.go
@@ -0,0 +1,52 @@
+package thrift
+
+import (
+	"bytes"
+	"context"
+	"encoding/json"
+	"testing"
+)
+
+func TestDuplicateToJSONReadMakesEqualJSON(t *testing.T) {
+	delegateBuf := NewTMemoryBuffer()
+	iprot := NewTJSONProtocolFactory().GetProtocol(delegateBuf)
+
+	s := NewMyTestStruct()
+	ctx := context.Background()
+	s.Write(ctx, iprot)
+
+	iprot.Flush(ctx)
+	jsonBytesWritten := delegateBuf.Bytes()
+
+	if err := json.Unmarshal(jsonBytesWritten, NewMyTestStruct()); err != nil {
+		t.Errorf("error unmarshaling written bytes: %s", err)
+	}
+
+	duplicateBuf := NewTMemoryBuffer()
+	dupProto := NewTJSONProtocolFactory().GetProtocol(duplicateBuf)
+	proto := &TDuplicateToProtocol{
+		Delegate:    NewTJSONProtocolFactory().GetProtocol(delegateBuf),
+		DuplicateTo: dupProto,
+	}
+
+	if err := s.Read(ctx, proto); err != nil {
+		t.Errorf("error reading struct from DuplicateTo: %s", err)
+	}
+	dupProto.Flush(ctx)
+
+	jsonBytesRead := duplicateBuf.Bytes()
+
+	if !bytes.Equal(jsonBytesWritten, jsonBytesRead) {
+		t.Errorf(`bytes read into duplicate do not equal bytes written
+		read:
+		%s
+		written:
+		%s
+		`, jsonBytesRead, jsonBytesWritten)
+	}
+
+	dup := NewMyTestStruct()
+	if err := dup.Read(ctx, dupProto); err != nil {
+		t.Errorf("error reading struct from duplicated protocol: %s", err)
+	}
+}
