Added support for extensions.
diff --git a/upb/json_encode.c b/upb/json_encode.c
index b7d6fa9..bdcc976 100644
--- a/upb/json_encode.c
+++ b/upb/json_encode.c
@@ -670,14 +670,18 @@
                              upb_msgval val, bool *first) {
   const char *name;
 
-  if (e->options & UPB_JSONENC_PROTONAMES) {
-    name = upb_fielddef_name(f);
-  } else {
-    name = upb_fielddef_jsonname(f);
-  }
-
   jsonenc_putsep(e, ",", first);
-  jsonenc_printf(e, "\"%s\":", name);
+
+  if (upb_fielddef_isextension(f)) {
+    jsonenc_printf(e, "\"[%s]\":", upb_fielddef_fullname(f));
+  } else {
+    if (e->options & UPB_JSONENC_PROTONAMES) {
+      name = upb_fielddef_name(f);
+    } else {
+      name = upb_fielddef_jsonname(f);
+    }
+    jsonenc_printf(e, "\"%s\":", name);
+  }
 
   if (upb_fielddef_ismap(f)) {
     jsonenc_map(e, val.map_val, f);