diff --git a/src/SymbolTable.cc b/src/SymbolTable.cc
index 68a0bc64ed9cd8b9d2fb42908e4a943a78cab9ff..1a10f2397b2f4c477838b0a11853b0bf67a4259e 100644
--- a/src/SymbolTable.cc
+++ b/src/SymbolTable.cc
@@ -1061,6 +1061,48 @@ SymbolTable::writeJsonOutput(ostream &output) const
 
   output << R"(, "parameters": )";
   writeJsonVarVector(output, param_ids);
+
+  if (observedVariablesNbr() > 0)
+    {
+      output << R"(, "varobs": [)";
+      for (size_t i = 0; i < varobs.size(); i++)
+	{
+	  if (i != 0)
+	    output << ", ";
+	  output << R"(")" << getName(varobs[i]) << R"(")";
+	}
+      output << "]" << endl;
+      
+      output << R"(, "varobs_ids": [)";
+      for (size_t i = 0; i < varobs.size(); i++)
+	{
+	  if (i != 0)
+	    output << ", ";
+	  output << getTypeSpecificID(varobs[i])+1;
+	}
+      output << "]" << endl;
+    }
+
+  if (observedExogenousVariablesNbr() > 0)
+    {
+      output << R"(, "varexobs": [)";
+      for (size_t i = 0; i < varexobs.size(); i++)
+	{
+	  if (i != 0)
+	    output << ", ";
+	  output << R"(")" << getName(varexobs[i]) << R"(")";
+	}
+      output << "]" << endl;
+      
+      output << R"(, "varexobs_ids": [)";
+      for (size_t i = 0; i < varexobs.size(); i++)
+	{
+	  if (i != 0)
+	    output << ", ";
+	  output << getTypeSpecificID(varexobs[i])+1;
+	}
+      output << "]" << endl;
+    }
 }
 
 void