diff --git a/encoding/jsonschema/decode.go b/encoding/jsonschema/decode.go
index f1c7f58..1e62b7a 100644
--- a/encoding/jsonschema/decode.go
+++ b/encoding/jsonschema/decode.go
@@ -21,11 +21,11 @@
 import (
 	"fmt"
 	"math/bits"
-	"sort"
 	"strings"
 
 	"cuelang.org/go/cue"
 	"cuelang.org/go/cue/ast"
+	"cuelang.org/go/cue/ast/astutil"
 	"cuelang.org/go/cue/errors"
 	"cuelang.org/go/cue/token"
 	"cuelang.org/go/internal"
@@ -41,19 +41,21 @@
 type decoder struct {
 	cfg *Config
 
-	errs    errors.Error
-	imports map[string]*ast.Ident
+	errs errors.Error
 
 	definitions []ast.Decl
 }
 
 // addImport registers
 func (d *decoder) addImport(pkg string) *ast.Ident {
-	ident, ok := d.imports[pkg]
-	if !ok {
-		ident = ast.NewIdent(pkg)
-		d.imports[pkg] = ident
+	spec := ast.NewImport(nil, pkg)
+	info, err := astutil.ParseImportSpec(spec)
+	if err != nil {
+		d.errf(cue.Value{}, "invalid import %q", pkg)
 	}
+	ident := ast.NewIdent(info.Ident)
+	ident.Node = spec
+
 	return ident
 }
 
@@ -90,23 +92,11 @@
 		}
 	}
 
-	var imports []string
-	for k := range d.imports {
-		imports = append(imports, k)
-	}
-	sort.Strings(imports)
-
-	if len(imports) > 0 {
-		x := &ast.ImportDecl{}
-		for _, p := range imports {
-			x.Specs = append(x.Specs, ast.NewImport(nil, p))
-		}
-		f.Decls = append(f.Decls, x)
-	}
-
 	f.Decls = append(f.Decls, a...)
 	f.Decls = append(f.Decls, d.definitions...)
 
+	_ = astutil.Sanitize(f)
+
 	return f
 }
 
diff --git a/encoding/jsonschema/jsonschema.go b/encoding/jsonschema/jsonschema.go
index 00027c6..9e81b73 100644
--- a/encoding/jsonschema/jsonschema.go
+++ b/encoding/jsonschema/jsonschema.go
@@ -41,10 +41,7 @@
 // The generated CUE schema is guaranteed to deem valid any value that is
 // a valid instance of the source JSON schema.
 func Extract(data *cue.Instance, cfg *Config) (f *ast.File, err error) {
-	d := &decoder{
-		cfg:     cfg,
-		imports: map[string]*ast.Ident{},
-	}
+	d := &decoder{cfg: cfg}
 
 	f = d.decode(data.Value())
 	if d.errs != nil {
