---
title: JSONEncoder
framework: foundation
role: symbol
role_heading: Class
path: foundation/jsonencoder
---

# JSONEncoder

An object that encodes instances of a data type as JSON objects.

## Declaration

```swift
class JSONEncoder
```

## Mentioned in

Uploading data to a website Encoding and Decoding Custom Types

## Overview

Overview The example below shows how to encode an instance of a simple GroceryProduct type from a JSON object. The type adopts Codable so that it’s encodable as JSON using a JSONEncoder instance. struct GroceryProduct: Codable {     var name: String     var points: Int     var description: String? }

let pear = GroceryProduct(name: "Pear", points: 250, description: "A ripe pear.")

let encoder = JSONEncoder() encoder.outputFormatting = .prettyPrinted

let data = try encoder.encode(pear) print(String(data: data, encoding: .utf8)!)

/* Prints:  {    "name" : "Pear",    "points" : 250,    "description" : "A ripe pear."  } */

## Topics

### First Steps

- [init()](foundation/jsonencoder/init().md)
- [encode(_:)](foundation/jsonencoder/encode(_:).md)

### Customizing Encoding

- [outputFormatting](foundation/jsonencoder/outputformatting-swift.property.md)
- [JSONEncoder.OutputFormatting](foundation/jsonencoder/outputformatting-swift.struct.md)
- [keyEncodingStrategy](foundation/jsonencoder/keyencodingstrategy-swift.property.md)
- [JSONEncoder.KeyEncodingStrategy](foundation/jsonencoder/keyencodingstrategy-swift.enum.md)
- [userInfo](foundation/jsonencoder/userinfo.md)

### Encoding Dates

- [dateEncodingStrategy](foundation/jsonencoder/dateencodingstrategy-swift.property.md)
- [JSONEncoder.DateEncodingStrategy](foundation/jsonencoder/dateencodingstrategy-swift.enum.md)

### Encoding Raw Data

- [dataEncodingStrategy](foundation/jsonencoder/dataencodingstrategy-swift.property.md)
- [JSONEncoder.DataEncodingStrategy](foundation/jsonencoder/dataencodingstrategy-swift.enum.md)

### Encoding Exceptional Numbers

- [nonConformingFloatEncodingStrategy](foundation/jsonencoder/nonconformingfloatencodingstrategy-swift.property.md)
- [JSONEncoder.NonConformingFloatEncodingStrategy](foundation/jsonencoder/nonconformingfloatencodingstrategy-swift.enum.md)

### Instance Methods

- [encode(_:configuration:)](foundation/jsonencoder/encode(_:configuration:)-721tx.md)
- [encode(_:configuration:)](foundation/jsonencoder/encode(_:configuration:)-8l39i.md)

## Relationships

### Conforms To

- [Copyable](swift/copyable.md)
- [Escapable](swift/escapable.md)
- [NetworkEncoder](network/networkencoder.md)
- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)
- [TopLevelEncoder](combine/toplevelencoder.md)

## See Also

### JSON

- [Using JSON with custom types](foundation/using-json-with-custom-types.md)
- [JSONDecoder](foundation/jsondecoder.md)
- [JSONSerialization](foundation/jsonserialization.md)
