Skip to content

JSON Feed Reference

JSON Feed is a syndication format based on JSON that provides a simple, straightforward way to publish feeds. Feedsmith provides full parsing and generation capabilities.

Versions1.0, 1.1
NamespacesNone (JSON-based format)

Functions

parseJsonFeed()

Parses JSON Feed content and returns a typed JSON Feed object.

typescript
import { parseJsonFeed } from 'feedsmith'

const jsonFeed = parseJsonFeed(jsonContent)
// Returns: object with all fields optional and dates as strings

Parameters

ParameterTypeDescription
contentstringThe JSON Feed content to parse

Returns

object - Parsed JSON Feed with all fields optional and dates as strings

generateJsonFeed()

Generates JSON Feed from feed data.

typescript
import { generateJsonFeed } from 'feedsmith'

const json = generateJsonFeed(feedData, {
  lenient: true
})

Parameters

ParameterTypeDescription
dataobjectJSON Feed data to generate
optionsobjectOptional generation settings

Options

OptionTypeDefaultDescription
lenientbooleanfalseEnable lenient mode for relaxed validation, see Lenient Mode

Returns

object - Generated JSON Feed

detectJsonFeed()

Detects if the provided content is a JSON Feed.

Parameters

ParameterTypeDescription
contentstringThe content to check

Returns

boolean - true if content appears to be JSON Feed format

Example

typescript
import { detectJsonFeed } from 'feedsmith'

const isJsonFeed = detectJsonFeed(jsonContent)

Types

INFO

TDate represents date fields in the type definitions. When parsing, dates are returned as strings in their original format (see Parsing › Handling Dates for more details). When generating, dates should be provided as JavaScript Date objects.

ts
export type Author = {
  name?: string
  url?: string
  avatar?: string
}

export type Attachment = {
  url: string
  mime_type: string
  title?: string
  size_in_bytes?: number
  duration_in_seconds?: number
}

export type Item<TDate extends DateLike> = {
  id: string
  url?: string
  external_url?: string
  title?: string
  content_html?: string
  content_text?: string
  summary?: string
  image?: string
  banner_image?: string
  date_published?: TDate
  date_modified?: TDate
  tags?: Array<string>
  authors?: Array<Author>
  language?: string
  attachments?: Array<Attachment>
} & ({ content_html: string } | { content_text: string })

export type Hub = {
  type: string
  url: string
}

export type Feed<TDate extends DateLike> = {
  title: string
  home_page_url?: string
  feed_url?: string
  description?: string
  user_comment?: string
  next_url?: string
  icon?: string
  favicon?: string
  language?: string
  expired?: boolean
  hubs?: Array<Hub>
  authors?: Array<Author>
  items: Array<Item<TDate>>
}