diff --git a/src/oemcommands.cpp b/src/oemcommands.cpp
index a4724e6..080c340 100644
--- a/src/oemcommands.cpp
+++ b/src/oemcommands.cpp
@@ -2643,12 +2643,28 @@
     std::ifstream file(JSON_OEM_DATA_FILE);
     if (file)
     {
-        file >> oemData;
+        try
+        {
+            file >> oemData;
+        }
+        // If parsing fails, initialize oemData as an empty JSON and
+        // overwrite the file
+        catch (const nlohmann::json::parse_error& e)
+        {
+            lg2::error("Error parsing JSON file: {ERROR}", "ERROR", e);
+            oemData = nlohmann::json::object();
+            std::ofstream outFile(JSON_OEM_DATA_FILE, std::ofstream::trunc);
+            outFile << oemData.dump(4); // Write empty JSON object to the file
+            outFile.close();
+        }
         file.close();
     }
+    else
+    {
+        lg2::info("Failed to open JSON file.");
+    }
 
-    phosphor::logging::log<phosphor::logging::level::INFO>(
-        "Registering OEM commands");
+    lg2::info("Registering OEM commands.");
 
     ipmiPrintAndRegister(NETFN_OEM_USB_DBG_REQ, CMD_OEM_USB_DBG_GET_FRAME_INFO,
                          NULL, ipmiOemDbgGetFrameInfo,
diff --git a/src/selcommands.cpp b/src/selcommands.cpp
index b959382..7069153 100644
--- a/src/selcommands.cpp
+++ b/src/selcommands.cpp
@@ -128,6 +128,22 @@
         selDataObj[KEY_FREE_SPACE] = 0xFFFF;
     }
 
+    void writeEmptyJson()
+    {
+        selDataObj = nlohmann::json::object(); // Create an empty JSON object
+        std::ofstream outFile(SEL_JSON_DATA_FILE);
+        if (outFile)
+        {
+            // Write empty JSON object to the file
+            outFile << selDataObj.dump(4);
+            outFile.close();
+        }
+        else
+        {
+            lg2::info("Failed to create SEL JSON file with empty JSON.");
+        }
+    }
+
   public:
     SELData()
     {
@@ -135,9 +151,24 @@
         std::ifstream file(SEL_JSON_DATA_FILE);
         if (file)
         {
-            file >> selDataObj;
+            try
+            {
+                file >> selDataObj;
+            }
+            catch (const nlohmann::json::parse_error& e)
+            {
+                lg2::error("Error parsing SEL JSON file: {ERROR}", "ERROR", e);
+                writeEmptyJson();
+                init(); // Initialize to default values
+            }
             file.close();
         }
+        else
+        {
+            lg2::info("Failed to open SEL JSON file.");
+            writeEmptyJson();
+            init();
+        }
 
         /* Initialize SelData object if no entries. */
         if (selDataObj.find(KEY_SEL_COUNT) == selDataObj.end())
