diff --git a/jsonapi/fixtures_test.go b/jsonapi/fixtures_test.go
index <HASH>..<HASH> 100644
--- a/jsonapi/fixtures_test.go
+++ b/jsonapi/fixtures_test.go
@@ -356,12 +356,12 @@ func (s *SQLNullPost) SetID(ID string) error {
 }
 
 type RenamedPostWithEmbedding struct {
+	Embedded SQLNullPost
 	ID       string `jsonapi:"-"`
 	Another  string `jsonapi:"name=another"`
 	Field    string `jsonapi:"name=foo"`
 	Other    string `jsonapi:"name=bar-bar"`
 	Ignored  string `jsonapi:"-"`
-	Embedded SQLNullPost
 }
 
 func (p *RenamedPostWithEmbedding) SetID(ID string) error {
diff --git a/jsonapi/unmarshal.go b/jsonapi/unmarshal.go
index <HASH>..<HASH> 100644
--- a/jsonapi/unmarshal.go
+++ b/jsonapi/unmarshal.go
@@ -320,7 +320,9 @@ func getFieldByTagName(val reflect.Value, fieldName string) (field reflect.Value
 			_, isEmbedded := val.Field(x).Addr().Interface().(UnmarshalIdentifier)
 			if isEmbedded {
 				field, found = getFieldByTagName(val.Field(x), fieldName)
-				return
+				if found {
+					return
+				}
 			}
 		}
fix too early return when unmarshal embedded structs

the search needs to go on if the field from the json was not found
in the embedded struct and there are other fields. Now there is a
check for that.