diff --git a/openstack/compute/v2/flavors/results.go b/openstack/compute/v2/flavors/results.go
index 0edc7d2..a49de0d 100644
--- a/openstack/compute/v2/flavors/results.go
+++ b/openstack/compute/v2/flavors/results.go
@@ -1,15 +1,13 @@
 package flavors
 
 import (
-	"errors"
+	"encoding/json"
+	"strconv"
 
 	"github.com/gophercloud/gophercloud"
 	"github.com/gophercloud/gophercloud/pagination"
 )
 
-// ErrCannotInterpret is returned by an Extract call if the response body doesn't have the expected structure.
-var ErrCannotInterpet = errors.New("Unable to interpret a response body.")
-
 // GetResult temporarily holds the response from a Get call.
 type GetResult struct {
 	gophercloud.Result
@@ -29,24 +27,60 @@
 	// The Id field contains the flavor's unique identifier.
 	// For example, this identifier will be useful when specifying which hardware configuration to use for a new server instance.
 	ID string `json:"id"`
-
 	// The Disk and RA< fields provide a measure of storage space offered by the flavor, in GB and MB, respectively.
 	Disk int `json:"disk"`
 	RAM  int `json:"ram"`
-
 	// The Name field provides a human-readable moniker for the flavor.
-	Name string `json:"name"`
-
+	Name       string  `json:"name"`
 	RxTxFactor float64 `json:"rxtx_factor"`
-
 	// Swap indicates how much space is reserved for swap.
 	// If not provided, this field will be set to 0.
 	Swap int `json:"swap"`
-
 	// VCPUs indicates how many (virtual) CPUs are available for this flavor.
 	VCPUs int `json:"vcpus"`
 }
 
+func (f *Flavor) UnmarshalJSON(b []byte) error {
+	var flavor struct {
+		ID         string      `json:"id"`
+		Disk       int         `json:"disk"`
+		RAM        int         `json:"ram"`
+		Name       string      `json:"name"`
+		RxTxFactor float64     `json:"rxtx_factor"`
+		Swap       interface{} `json:"swap"`
+		VCPUs      int         `json:"vcpus"`
+	}
+	err := json.Unmarshal(b, &flavor)
+	if err != nil {
+		return err
+	}
+
+	f.ID = flavor.ID
+	f.Disk = flavor.Disk
+	f.RAM = flavor.RAM
+	f.Name = flavor.Name
+	f.RxTxFactor = flavor.RxTxFactor
+	f.VCPUs = flavor.VCPUs
+
+	switch t := flavor.Swap.(type) {
+	case float64:
+		f.Swap = int(t)
+	case string:
+		switch t {
+		case "":
+			f.Swap = 0
+		default:
+			swap, err := strconv.ParseFloat(t, 64)
+			if err != nil {
+				return err
+			}
+			f.Swap = int(swap)
+		}
+	}
+
+	return nil
+}
+
 // FlavorPage contains a single page of the response from a List call.
 type FlavorPage struct {
 	pagination.LinkedPageBase
diff --git a/openstack/compute/v2/flavors/testing/requests_test.go b/openstack/compute/v2/flavors/testing/requests_test.go
index e86512a..1b96933 100644
--- a/openstack/compute/v2/flavors/testing/requests_test.go
+++ b/openstack/compute/v2/flavors/testing/requests_test.go
@@ -35,14 +35,16 @@
 								"name": "m1.tiny",
 								"disk": 1,
 								"ram": 512,
-								"vcpus": 1
+								"vcpus": 1,
+								"swap":""
 							},
 							{
 								"id": "2",
 								"name": "m2.small",
 								"disk": 10,
 								"ram": 1024,
-								"vcpus": 2
+								"vcpus": 2,
+								"swap": 1000
 							}
 						],
 						"flavors_links": [
@@ -70,8 +72,8 @@
 		}
 
 		expected := []flavors.Flavor{
-			{ID: "1", Name: "m1.tiny", Disk: 1, RAM: 512, VCPUs: 1},
-			{ID: "2", Name: "m2.small", Disk: 10, RAM: 1024, VCPUs: 2},
+			{ID: "1", Name: "m1.tiny", Disk: 1, RAM: 512, VCPUs: 1, Swap: 0},
+			{ID: "2", Name: "m2.small", Disk: 10, RAM: 1024, VCPUs: 2, Swap: 1000},
 		}
 
 		if !reflect.DeepEqual(expected, actual) {
@@ -105,7 +107,8 @@
 					"disk": 1,
 					"ram": 512,
 					"vcpus": 1,
-					"rxtx_factor": 1
+					"rxtx_factor": 1,
+					"swap": ""
 				}
 			}
 		`)
@@ -123,6 +126,7 @@
 		RAM:        512,
 		VCPUs:      1,
 		RxTxFactor: 1,
+		Swap:       0,
 	}
 	if !reflect.DeepEqual(expected, actual) {
 		t.Errorf("Expected %#v, but was %#v", expected, actual)
