func formatJSON(doc *bson.Raw, pretty bool) ([]byte, error) { decodedDoc := bson.D{} err := bson.Unmarshal(doc.Data, &decodedDoc) if err != nil { return nil, err } extendedDoc, err := bsonutil.ConvertBSONValueToJSON(decodedDoc) if err != nil { return nil, fmt.Errorf("error converting BSON to extended JSON: %v", err) } jsonBytes, err := json.Marshal(extendedDoc) if pretty { var jsonFormatted bytes.Buffer json.Indent(&jsonFormatted, jsonBytes, "", "\t") jsonBytes = jsonFormatted.Bytes() } if err != nil { return nil, fmt.Errorf("error converting doc to JSON: %v", err) } return jsonBytes, nil }
func printJSON(doc *bson.Raw, out io.Writer, pretty bool) error { decodedDoc := bson.D{} err := bson.Unmarshal(doc.Data, &decodedDoc) if err != nil { return err } extendedDoc, err := bsonutil.ConvertBSONValueToJSON(decodedDoc) if err != nil { return fmt.Errorf("error converting BSON to extended JSON: %v", err) } jsonBytes, err := json.Marshal(extendedDoc) if pretty { var jsonFormatted bytes.Buffer json.Indent(&jsonFormatted, jsonBytes, "", "\t") jsonBytes = jsonFormatted.Bytes() } if err != nil { return fmt.Errorf("error converting doc to JSON: %v", err) } _, err = out.Write(jsonBytes) return err }
// ExportDocument converts the given document to extended JSON, and writes it // to the output. func (jsonExporter *JSONExportOutput) ExportDocument(document bson.M) error { if jsonExporter.ArrayOutput || jsonExporter.PrettyOutput { if jsonExporter.NumExported >= 1 { if jsonExporter.ArrayOutput { jsonExporter.Out.Write([]byte(",")) } if jsonExporter.PrettyOutput { jsonExporter.Out.Write([]byte("\n")) } } extendedDoc, err := bsonutil.ConvertBSONValueToJSON(document) if err != nil { return err } jsonOut, err := json.Marshal(extendedDoc) if err != nil { return fmt.Errorf("error converting BSON to extended JSON: %v", err) } if jsonExporter.PrettyOutput { var jsonFormatted bytes.Buffer json.Indent(&jsonFormatted, jsonOut, "", "\t") jsonOut = jsonFormatted.Bytes() } jsonExporter.Out.Write(jsonOut) } else { extendedDoc, err := bsonutil.ConvertBSONValueToJSON(document) if err != nil { return err } err = jsonExporter.Encoder.Encode(extendedDoc) if err != nil { return err } } jsonExporter.NumExported++ return nil }