diff --git a/tests/go_test.go b/tests/go_test.go
index 11b3f0a..8cb7b97 100644
--- a/tests/go_test.go
+++ b/tests/go_test.go
@@ -17,14 +17,14 @@
 package main
 
 import (
-	mygame "MyGame"                     // refers to generated code
-	example "MyGame/Example"            // refers to generated code
+	mygame "MyGame"          // refers to generated code
+	example "MyGame/Example" // refers to generated code
+	"encoding/json"
 	optional_scalars "optional_scalars" // refers to generated code
 
 	"bytes"
 	"flag"
 	"fmt"
-	"io/ioutil"
 	"os"
 	"reflect"
 	"sort"
@@ -69,6 +69,35 @@
 	os.Exit(m.Run())
 }
 
+// TestTextParsing test if text parsing works with object API.
+func TestTextParsing(t *testing.T) {
+	expectedMonster := example.MonsterT{
+		Mana:                  42,
+		Name:                  "foo",
+		LongEnumNormalDefault: example.LongEnumLongTwo,
+	}
+
+	buf := new(bytes.Buffer)
+	if err := json.NewEncoder(buf).Encode(expectedMonster); err != nil {
+		t.Fatal(err)
+	}
+
+	var monster example.MonsterT
+	if err := json.NewDecoder(buf).Decode(&monster); err != nil {
+		t.Fatal(err)
+	}
+
+	if monster.Mana != expectedMonster.Mana {
+		t.Fatal("wrong mana:", monster.Mana)
+	}
+	if monster.Name != expectedMonster.Name {
+		t.Fatal("wrong name:", monster.Name)
+	}
+	if monster.LongEnumNormalDefault != expectedMonster.LongEnumNormalDefault {
+		t.Fatal("wrong enum:", monster.LongEnumNormalDefault)
+	}
+}
+
 // TestAll runs all checks, failing if any errors occur.
 func TestAll(t *testing.T) {
 	// Verify that the Go FlatBuffers runtime library generates the
@@ -101,7 +130,7 @@
 
 	// Verify that the buffer generated by C++ code is readable by the
 	// generated Go code:
-	monsterDataCpp, err := ioutil.ReadFile(cppData)
+	monsterDataCpp, err := os.ReadFile(cppData)
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -141,7 +170,7 @@
 	// is given, check that Go code can read it, and that Go code
 	// generates an identical buffer when used to create the example data:
 	if javaData != "" {
-		monsterDataJava, err := ioutil.ReadFile(javaData)
+		monsterDataJava, err := os.ReadFile(javaData)
 		if err != nil {
 			t.Fatal(err)
 		}
@@ -155,7 +184,7 @@
 	}
 
 	// Write the generated buffer out to a file:
-	err = ioutil.WriteFile(outData, generated[off:], os.FileMode(0644))
+	err = os.WriteFile(outData, generated[off:], os.FileMode(0644))
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -1685,7 +1714,7 @@
 	CheckObjectAPI(generated, off, true, fail)
 
 	// Write generated bfufer out to a file
-	if err := ioutil.WriteFile(outData+".sp", generated[off:], os.FileMode(0644)); err != nil {
+	if err := os.WriteFile(outData+".sp", generated[off:], os.FileMode(0644)); err != nil {
 		fail("failed to write file: %s", err)
 	}
 }
