diff --git a/libopenbmc_intf/Makefile b/libopenbmc_intf/Makefile
index df6ccf0..65b1616 100644
--- a/libopenbmc_intf/Makefile
+++ b/libopenbmc_intf/Makefile
@@ -7,7 +7,7 @@
 LIBOBMC=$(SONAME).$(VERSION)
 INCLUDES=openbmc_intf.h openbmc.h gpio.h gpio_configs.h
 
-LDLIBS+=$(shell pkg-config --libs $(PACKAGE_DEPS))
+LDLIBS+=$(shell pkg-config --libs $(PACKAGE_DEPS)) -lcjson
 ALL_CFLAGS+=$(shell pkg-config --cflags $(PACKAGE_DEPS)) -fPIC -Werror $(CFLAGS)
 
 all: $(SONAME)
@@ -18,7 +18,7 @@
 $(SONAME): $(LIBOBMC)
 	ln -sf $^ $@
 
-$(LIBOBMC): lib%.so.$(VERSION): %.o gpio.o gpio_configs.o
+$(LIBOBMC): lib%.so.$(VERSION): %.o gpio.o gpio_configs.o gpio_json.o
 	$(CC) -shared $(CFLAGS) $(LDFLAGS) -Wl,-soname,$(SONAME) \
 		-o $@ $^ $(LDLIBS)
 
diff --git a/libopenbmc_intf/gpio_json.c b/libopenbmc_intf/gpio_json.c
new file mode 100644
index 0000000..ae13c90
--- /dev/null
+++ b/libopenbmc_intf/gpio_json.c
@@ -0,0 +1,62 @@
+/**
+ * Copyright © 2018 IBM Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include "gpio_json.h"
+
+#define GPIO_FILE "/etc/default/obmc/gpio/gpio_defs.json"
+
+cJSON* load_json()
+{
+	FILE* fd = fopen(GPIO_FILE, "r");
+	if (!fd)
+	{
+		fprintf(stderr, "Unable to open GPIO JSON file %s\n", GPIO_FILE);
+		return NULL;
+	}
+
+	fseek(fd, 0, SEEK_END);
+	long size = ftell(fd);
+	rewind(fd);
+
+	char* data = malloc(size + 1);
+
+	size_t rc = fread(data, 1, size, fd);
+	fclose(fd);
+	if (rc != size)
+	{
+		free(data);
+		fprintf(stderr, "Only read %d out of %ld bytes of GPIO file %s\n",
+				rc, size, GPIO_FILE);
+		return NULL;
+	}
+
+	data[size] = '\0';
+	cJSON* json = cJSON_Parse(data);
+	free(data);
+
+	if (json == NULL)
+	{
+		fprintf(stderr, "Failed parsing GPIO file %s\n", GPIO_FILE);
+
+		const char* error_loc = cJSON_GetErrorPtr();
+		if (error_loc != NULL)
+		{
+			fprintf(stderr, "JSON error at %s\n", error_loc);
+		}
+	}
+	return json;
+}
diff --git a/libopenbmc_intf/gpio_json.h b/libopenbmc_intf/gpio_json.h
new file mode 100644
index 0000000..b966c98
--- /dev/null
+++ b/libopenbmc_intf/gpio_json.h
@@ -0,0 +1,15 @@
+#ifndef __GPIO_JSON_H__
+#define __GPIO_JSON_H__
+
+#include <cjson/cJSON.h>
+
+/**
+ * Loads the GPIO definitions from JSON into a cJSON structure.
+ *
+ * @return cjSON* - The structure with the GPIO info.  Should be freed
+ *                  with cJSON_Delete() when done.  NULL is returned
+ *                  if there was an error.
+ */
+cJSON* load_json();
+
+#endif
