Omit private fields from json
diff --git a/codegen/src/parse.rs b/codegen/src/parse.rs
index 3ec3142..b43bef5 100644
--- a/codegen/src/parse.rs
+++ b/codegen/src/parse.rs
@@ -98,16 +98,16 @@
     items: &ItemLookup,
     tokens: &TokenLookup,
 ) -> types::Struct {
-    let mut all_fields_pub = true;
+    let all_fields_pub = item.fields.iter().all(|field| is_pub(&field.vis));
+    if !all_fields_pub {
+        return types::Struct::new(ident.to_string(), features, IndexMap::new());
+    }
+
     let fields = match &item.fields {
         syn::Fields::Named(fields) => fields
             .named
             .iter()
             .map(|field| {
-                if !is_pub(&field.vis) {
-                    all_fields_pub = false;
-                }
-
                 (
                     field.ident.as_ref().unwrap().to_string(),
                     introspect_type(&field.ty, items, tokens),
@@ -118,7 +118,7 @@
         _ => panic!("Struct representation not supported"),
     };
 
-    types::Struct::new(ident.to_string(), features, fields, all_fields_pub)
+    types::Struct::new(ident.to_string(), features, fields)
 }
 
 fn introspect_type(item: &syn::Type, items: &ItemLookup, tokens: &TokenLookup) -> types::Type {