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);