Skip to content

Latest commit

 

History

History

docs

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>README  Reference</title>
    <link rel="stylesheet" type="text/css" href="css/jazzy.css" />
    <link rel="stylesheet" type="text/css" href="css/highlight.css" />
    <meta charset="utf-8">
    <script src="js/jquery.min.js" defer></script>
    <script src="js/jazzy.js" defer></script>
    
  </head>
  <body>


    <a title="README  Reference"></a>

    <header class="header">
      <p class="header-col header-col--primary">
        <a class="header-link" href="index.html">
          Arrow Docs
        </a>
         (72% documented)
      </p>
    
        <p class="header-col header-col--secondary">
          <a class="header-link" href="https://github.com/s4cha/Arrow">
            <img class="header-icon" src="img/gh.png"/>
            View on GitHub
          </a>
        </p>
    
    </header>

    <p class="breadcrumbs">
      <a class="breadcrumb" href="index.html">Arrow Reference</a>
      <img class="carat" src="img/carat.png" />
      README  Reference
    </p>

    <div class="content-wrapper">
      <nav class="navigation">
        <ul class="nav-groups">
          <li class="nav-group-name">
            <a class="nav-group-name-link" href="Guides.html">Guides</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="readme.html">README</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a class="nav-group-name-link" href="Classes.html">Classes</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Classes/Arrow.html">Arrow</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Classes/JSON.html">JSON</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a class="nav-group-name-link" href="Functions.html">Functions</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Functions/&lt;--(_:_:).html">&lt;--(_:_:)</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Functions/&lt;--(_:_:).html">&lt;--(_:_:)</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Functions/&lt;--(_:_:).html">&lt;--(_:_:)</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Functions/&lt;--(_:_:).html">&lt;--(_:_:)</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Functions/&lt;--(_:_:).html">&lt;--(_:_:)</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Functions/&lt;--(_:_:).html">&lt;--(_:_:)</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Functions/&lt;--(_:_:).html">&lt;--(_:_:)</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Functions/&lt;--(_:_:).html">&lt;--(_:_:)</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Functions.html#/s:ZF5Arrowoi3lssFTRCSo6NSDateGSqCS_4JSON__T_">&lt;--(_:_:)</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Functions.html#/s:ZF5Arrowoi3lssFTRGSqCSo6NSDate_GSqCS_4JSON__T_">&lt;--(_:_:)</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Functions.html#/s:ZF5Arrowoi3lssFTRCSo5NSURLGSqCS_4JSON__T_">&lt;--(_:_:)</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Functions.html#/s:ZF5Arrowoi3lssFTRGSqCSo5NSURL_GSqCS_4JSON__T_">&lt;--(_:_:)</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Functions/&lt;--(_:_:).html">&lt;--(_:_:)</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Functions/&lt;--(_:_:).html">&lt;--(_:_:)</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a class="nav-group-name-link" href="Protocols.html">Protocols</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/ArrowParsable.html">ArrowParsable</a>
              </li>
            </ul>
          </li>
        </ul>
      </nav>
      <article class="main-content">

        <section class="section">
          <div class="section-content">
            
            <a href='#arrow-em-elegant-json-parsing-in-swift-em' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h1 id='arrow-em-elegant-json-parsing-in-swift-em'>Arrow 🏹 - <em>Elegant JSON Parsing in Swift</em></h1>

<p><a href="https://developer.apple.com/swift"><img src="https://img.shields.io/badge/language-swift2-f48041.svg?style=flat" alt="Language: Swift 2"></a>
<img src="https://img.shields.io/badge/platform-iOS%208%2B-blue.svg?style=flat" alt="Platform: iOS 8+">
<a href="https://github.com/Carthage/Carthage"><img src="https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat" alt="Carthage compatible"></a>
<a href="https://cocoapods.org"><img src="https://img.shields.io/badge/Cocoapods-compatible-4BC51D.svg?style=flat" alt="Cocoapods compatible"></a>
<a href="https://www.bitrise.io/app/ffd8fe5df34624ff"><img src="https://www.bitrise.io/app/ffd8fe5df34624ff.svg?token=IahWn-RB5hTWzvBbcIktsQ" alt="Build Status"></a>
<a href="https://codebeat.co/projects/github-com-s4cha-arrow"><img src="https://codebeat.co/badges/2acb8664-02f7-463d-9de2-2be9e87ba17c" alt="codebeat badge"></a>
<a href="https://github.com/s4cha/Arrow/blob/master/LICENSE"><img src="http://img.shields.io/badge/license-MIT-lightgrey.svg?style=flat" alt="License: MIT"></a>
<a href=""><img src="https://img.shields.io/badge/release-2.0-blue.svg" alt="Release version"></a></p>

<p><a href="#reason">Reason</a> - <a href="#example">Example</a> - <a href="#installation">Installation</a></p>
<pre class="highlight swift"><code><span class="n">identifier</span> <span class="o">&lt;--</span> <span class="n">json</span><span class="p">[</span><span class="s">"id"</span><span class="p">]</span>
<span class="n">name</span> <span class="o">&lt;--</span> <span class="n">json</span><span class="p">[</span><span class="s">"name"</span><span class="p">]</span>
<span class="n">stats</span> <span class="o">&lt;--</span> <span class="n">json</span><span class="p">[</span><span class="s">"stats"</span><span class="p">]</span>
</code></pre>
<a href='#reason' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='reason'>Reason</h2>
<a href='#why' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h3 id='why'>Why</h3>

<p>Because parsing JSON in Swift is full of <strong>unecessary if lets, obvious casts and nil-checks</strong><br>
<em>There must be a better way</em></p>
<a href='#how' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='how'>How</h2>

<p>By using a simple arrow operator that takes care of the boilerplate code for us.<br>
Json mapping code becomes <strong>concise</strong> and <strong>maintainable</strong> ❤️</p>
<a href='#what' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='what'>What</h2>

<ul>
<li>[x] Simple &amp; Lightweight (~200lines)</li>
<li>[x] Pure Swift</li>
<li>[x] Leaves your models clean</li>
<li>[x] Implicitly casts JSON values to the right types in your model</li>
<li>[x] Automatic NSDate, NSURL, Enum, Custom model Parsing</li>
<li>[x] Converts string values to numeric types in your model</li>
<li>[x] Does not crash if JSON key is not there, nor returns nil, it simply doesn&rsquo;t do anything</li>
<li>[x] No overly complex obscure functional chaining operator overloading voodoo magic ?==:&gt;&gt;&gt;&lt;&gt; 😅</li>
</ul>
<a href='#example' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='example'>Example</h2>
<a href='#swift-model' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h3 id='swift-model'>Swift Model</h3>
<pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">Profile</span> <span class="p">{</span>
    <span class="k">var</span> <span class="nv">identifier</span> <span class="o">=</span> <span class="mi">0</span>
    <span class="k">var</span> <span class="nv">name</span> <span class="o">=</span> <span class="s">""</span>
    <span class="k">var</span> <span class="nv">link</span><span class="p">:</span><span class="kt">NSURL</span><span class="p">?</span>
    <span class="k">var</span> <span class="nv">weekday</span><span class="p">:</span><span class="kt">WeekDay</span> <span class="o">=</span> <span class="o">.</span><span class="kt">Monday</span>
    <span class="k">var</span> <span class="nv">stats</span> <span class="o">=</span> <span class="kt">Stats</span><span class="p">()</span>
    <span class="k">var</span> <span class="nv">phoneNumbers</span> <span class="o">=</span> <span class="p">[</span><span class="kt">PhoneNumber</span><span class="p">]()</span>
<span class="p">}</span>
</code></pre>
<a href='#json-file' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h3 id='json-file'>JSON File</h3>
<pre class="highlight json"><code><span class="p">{</span><span class="w">
    </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="mi">15678</span><span class="p">,</span><span class="w">
    </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"John Doe"</span><span class="p">,</span><span class="w">
    </span><span class="nt">"link"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://apple.com/steve"</span><span class="p">,</span><span class="w">
    </span><span class="nt">"weekdayInt"</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w">
    </span><span class="nt">"stats"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
        </span><span class="nt">"numberOfFriends"</span><span class="p">:</span><span class="w"> </span><span class="mi">163</span><span class="p">,</span><span class="w">
        </span><span class="nt">"numberOfFans"</span><span class="p">:</span><span class="w"> </span><span class="mi">10987</span><span class="w">
    </span><span class="p">},</span><span class="w">
    </span><span class="nt">"phoneNumbers"</span><span class="p">:</span><span class="w"> </span><span class="p">[{</span><span class="w">
                     </span><span class="nt">"label"</span><span class="p">:</span><span class="w"> </span><span class="s2">"house"</span><span class="p">,</span><span class="w">
                     </span><span class="nt">"number"</span><span class="p">:</span><span class="w"> </span><span class="s2">"9809876545"</span><span class="w">
                     </span><span class="p">},</span><span class="w"> </span><span class="p">{</span><span class="w">
                     </span><span class="nt">"label"</span><span class="p">:</span><span class="w"> </span><span class="s2">"cell"</span><span class="p">,</span><span class="w">
                     </span><span class="nt">"number"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0908070656"</span><span class="w">
                     </span><span class="p">},</span><span class="w"> </span><span class="p">{</span><span class="w">
                     </span><span class="nt">"label"</span><span class="p">:</span><span class="w"> </span><span class="s2">"work"</span><span class="p">,</span><span class="w">
                     </span><span class="nt">"number"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0916570656"</span><span class="w">
    </span><span class="p">}]</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre>
<a href='#before-chaos' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h3 id='before-chaos'>Before (Chaos)</h3>
<pre class="highlight swift"><code><span class="k">var</span> <span class="nv">profile</span> <span class="o">=</span> <span class="kt">Profile</span><span class="p">()</span>

<span class="c1">// Int</span>
<span class="k">if</span> <span class="k">let</span> <span class="nv">id</span> <span class="o">=</span> <span class="n">json</span><span class="p">[</span><span class="s">"id"</span><span class="p">]</span> <span class="k">as?</span> <span class="kt">Int</span> <span class="p">{</span>
    <span class="n">profile</span><span class="o">.</span><span class="n">identifier</span> <span class="o">=</span> <span class="n">id</span>
<span class="p">}</span>  
<span class="c1">// String</span>
<span class="k">if</span> <span class="k">let</span> <span class="nv">name</span> <span class="o">=</span> <span class="n">json</span><span class="p">[</span><span class="s">"name"</span><span class="p">]</span> <span class="k">as?</span> <span class="kt">String</span> <span class="p">{</span>
    <span class="n">profile</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
<span class="p">}</span>
<span class="c1">// NSURL</span>
<span class="k">if</span> <span class="k">let</span> <span class="nv">link</span> <span class="o">=</span> <span class="n">json</span><span class="p">[</span><span class="s">"link"</span><span class="p">]</span> <span class="k">as?</span> <span class="kt">String</span><span class="p">,</span> <span class="n">url</span> <span class="o">=</span> <span class="kt">NSURL</span><span class="p">(</span><span class="nv">string</span><span class="p">:</span><span class="n">link</span><span class="p">)</span>  <span class="p">{</span>
    <span class="n">profile</span><span class="o">.</span><span class="n">link</span> <span class="o">=</span> <span class="n">link</span>
<span class="p">}</span>
<span class="c1">// Enum</span>
<span class="k">if</span> <span class="k">let</span> <span class="nv">weekdayInt</span> <span class="o">=</span> <span class="n">json</span><span class="p">[</span><span class="s">"weekdayInt"</span><span class="p">]</span> <span class="k">as?</span> <span class="kt">Int</span><span class="p">,</span> <span class="n">weekday</span> <span class="o">=</span> <span class="kt">WeekDay</span><span class="p">(</span><span class="nv">rawValue</span><span class="p">:</span><span class="n">weekdayInt</span><span class="p">)</span> <span class="p">{</span>
    <span class="n">profile</span><span class="o">.</span><span class="n">weekday</span> <span class="o">=</span> <span class="n">weekday</span>
<span class="p">}</span>
<span class="c1">// Custom nested object</span>
<span class="k">if</span> <span class="k">let</span> <span class="nv">statsJson</span> <span class="o">=</span> <span class="n">json</span><span class="p">[</span><span class="s">"stats"</span><span class="p">]</span> <span class="k">as?</span> <span class="kt">AnyObject</span> <span class="p">{</span>
    <span class="k">if</span> <span class="k">let</span> <span class="nv">numberOfFans</span> <span class="o">=</span> <span class="n">statsJson</span><span class="p">[</span><span class="s">"numberOfFans"</span><span class="p">]</span> <span class="k">as?</span> <span class="kt">Int</span> <span class="p">{</span>
        <span class="n">profile</span><span class="o">.</span><span class="n">stats</span><span class="o">.</span><span class="n">numberOfFans</span> <span class="o">=</span> <span class="n">numberOfFans</span>
    <span class="p">}</span>
    <span class="k">if</span> <span class="k">let</span> <span class="nv">numberOfFriends</span> <span class="o">=</span> <span class="n">statsJson</span><span class="p">[</span><span class="s">"numberOfFriends"</span><span class="p">]</span> <span class="k">as?</span> <span class="kt">Int</span> <span class="p">{</span>
        <span class="n">profile</span><span class="o">.</span><span class="n">stats</span><span class="o">.</span><span class="n">numberOfFriends</span> <span class="o">=</span> <span class="n">numberOfFriends</span>
    <span class="p">}</span>
<span class="p">}</span>
<span class="c1">// Array of custom nested object</span>
<span class="k">if</span> <span class="k">let</span> <span class="nv">pns</span> <span class="o">=</span> <span class="n">json</span><span class="p">[</span><span class="s">"phoneNumbers"</span><span class="p">]</span> <span class="k">as?</span> <span class="p">[</span><span class="kt">AnyObject</span><span class="p">]</span> <span class="p">{</span>
    <span class="k">for</span> <span class="n">pn</span> <span class="k">in</span> <span class="n">pns</span> <span class="p">{</span>
        <span class="n">phoneNumbers</span><span class="o">.</span><span class="nf">append</span><span class="p">(</span><span class="kt">PhoneNumber</span><span class="p">(</span><span class="nv">json</span><span class="p">:</span> <span class="n">pn</span><span class="p">))</span>
    <span class="p">}</span>
<span class="p">}</span>
</code></pre>
<a href='#after' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h3 id='after'>After  🎉🎉🎉</h3>
<pre class="highlight swift"><code><span class="kd">extension</span> <span class="kt">Profile</span><span class="p">:</span><span class="kt">ArrowParsable</span> <span class="p">{</span>
    <span class="k">mutating</span> <span class="kd">func</span> <span class="nf">deserialize</span><span class="p">(</span><span class="nv">json</span><span class="p">:</span> <span class="kt">JSON</span><span class="p">)</span> <span class="p">{</span>
        <span class="n">identifier</span> <span class="o">&lt;--</span> <span class="n">json</span><span class="p">[</span><span class="s">"id"</span><span class="p">]</span>
        <span class="n">link</span> <span class="o">&lt;--</span> <span class="n">json</span><span class="p">[</span><span class="s">"link"</span><span class="p">]</span>
        <span class="n">name</span> <span class="o">&lt;--</span> <span class="n">json</span><span class="p">[</span><span class="s">"name"</span><span class="p">]</span>
        <span class="n">weekday</span> <span class="o">&lt;--</span> <span class="n">json</span><span class="p">[</span><span class="s">"weekdayInt"</span><span class="p">]</span>
        <span class="n">stats</span> <span class="o">&lt;-</span> <span class="n">json</span><span class="p">[</span><span class="s">"stats"</span><span class="p">]</span>
        <span class="n">phoneNumbers</span> <span class="o">&lt;--</span> <span class="n">json</span><span class="p">[</span><span class="s">"phoneNumbers"</span><span class="p">]</span>
    <span class="p">}</span>
<span class="p">}</span>
</code></pre>
<a href='#usage' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h3 id='usage'>Usage</h3>
<pre class="highlight swift"><code><span class="k">let</span> <span class="nv">profile</span> <span class="o">=</span> <span class="kt">Profile</span><span class="p">()</span>
<span class="n">profile</span><span class="o">.</span><span class="nf">deserialize</span><span class="p">(</span><span class="n">json</span><span class="p">)</span>
</code></pre>
<a href='#installation' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='installation'>Installation</h2>
<a href='#carthage' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h4 id='carthage'>Carthage</h4>
<pre class="highlight plaintext"><code>github "s4cha/Arrow"
</code></pre>
<a href='#cocoapods' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h4 id='cocoapods'>CocoaPods</h4>
<pre class="highlight plaintext"><code>pod 'Arrow'
use_frameworks!
</code></pre>
<a href='#manually' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h4 id='manually'>Manually</h4>

<p>Simply Copy and Paste Arrow.swift in your Xcode Project :)
<a href="https://github.com/s4cha/Arrow/blob/master/Arrow.swift">https://github.com/s4cha/Arrow/blob/master/Arrow.swift</a></p>
<a href='#as-a-framework' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h4 id='as-a-framework'>As A Framework</h4>

<p>Grab this repository and build the Framework target on the example project. Then Link against this framework.</p>
<a href='#how-does-that-work' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='how-does-that-work'>How Does That Work</h2>

<p>Notice earlier we typed :</p>
<pre class="highlight swift"><code><span class="n">stats</span> <span class="o">&lt;--</span> <span class="n">json</span><span class="p">[</span><span class="s">"stats"</span><span class="p">]</span>
</code></pre>

<p>That&rsquo;s because we created and extension <q>Stats+Arrow.swift</q> enabling us to use the Arrow Operator</p>
<pre class="highlight swift"><code><span class="c1">//  Stats+Arrow.swift</span>

<span class="kd">import</span> <span class="kt">Foundation</span>

<span class="kd">extension</span> <span class="kt">Stats</span><span class="p">:</span><span class="kt">ArrowParsable</span> <span class="p">{</span>
    <span class="k">mutating</span> <span class="kd">func</span> <span class="nf">deserialize</span><span class="p">(</span><span class="nv">json</span><span class="p">:</span> <span class="kt">JSON</span><span class="p">)</span> <span class="p">{</span>
        <span class="n">numberOfFriends</span> <span class="o">&lt;--</span> <span class="n">json</span><span class="p">[</span><span class="s">"numberOfFriends"</span><span class="p">]</span>
        <span class="n">numberOfFans</span> <span class="o">&lt;--</span> <span class="n">json</span><span class="p">[</span><span class="s">"numberOfFans"</span><span class="p">]</span>
    <span class="p">}</span>
<span class="p">}</span>
</code></pre>
<a href='#flexible-you-said' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='flexible-you-said'>Flexible you said</h2>

<ul>
<li>DO I have to use the &lt;&ndash; for my sub models</li>
<li>Nope, you could write it like so if you wanted :</li>
</ul>
<pre class="highlight swift"><code><span class="n">stats</span><span class="o">.</span><span class="n">numberOfFriends</span> <span class="o">&lt;--</span> <span class="n">json</span><span class="p">[</span><span class="s">"stats.numberOfFriends"</span><span class="p">]</span>
<span class="n">stats</span><span class="o">.</span><span class="n">numberOfFans</span> <span class="o">&lt;--</span> <span class="n">json</span><span class="p">[</span><span class="s">"stats.numberOfFans"</span><span class="p">]</span>
</code></pre>

<ul>
<li>Hey I don&rsquo;t want to parse NSDates in every files, do you have something for me?</li>
</ul>

<p>Sure, just set your date format once and you&rsquo;re done.</p>
<pre class="highlight swift"><code><span class="c1">// Configure NSDate Parsing</span>
<span class="kt">Arrow</span><span class="o">.</span><span class="nf">setDateFormat</span><span class="p">(</span><span class="s">"yyyy-MM-dd'T'HH:mm:ssZZZZZ"</span><span class="p">)</span>
<span class="kt">Arrow</span><span class="o">.</span><span class="nf">setUseTimeIntervalSinceReferenceDate</span><span class="p">(</span><span class="kc">true</span><span class="p">)</span>

<span class="c1">// Dates can be parsed form custom date format or timestamp</span>
<span class="k">let</span> <span class="nv">json</span><span class="p">:</span><span class="kt">JSON</span> <span class="o">=</span> <span class="kt">JSON</span><span class="p">([</span><span class="s">"date"</span><span class="p">:</span> <span class="s">"2013-06-07T16:38:40+02:00"</span><span class="p">,</span> <span class="s">"timestamp"</span><span class="p">:</span> <span class="mi">392308720</span><span class="p">])</span>
<span class="n">date1</span> <span class="o">&lt;--</span> <span class="n">json</span><span class="p">[</span><span class="s">"date"</span><span class="p">]</span>
<span class="n">date2</span> <span class="o">&lt;--</span> <span class="n">json</span><span class="p">[</span><span class="s">"timestamp"</span><span class="p">]</span>
</code></pre>

<p>What if I want a Custom NSDate format for a specific key ?
<code>swift
createdAt &lt;-- json[&quot;created_at&quot;]?.dateFormat(&quot;yyyy-MM-dd&#39;T&#39;HH:mm:ssZZZZZ&quot;)
</code>
Just provide it on a case per case basis ! 🎉</p>
<a href='#accessing-json-values' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='accessing-json-values'>Accessing JSON values</h2>
<a href='#nested-values' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h3 id='nested-values'>Nested values</h3>
<pre class="highlight swift"><code><span class="n">value</span> <span class="o">&lt;--</span> <span class="n">json</span><span class="p">[</span><span class="s">"nested.nested.nested.nestedValue"</span><span class="p">]</span>
</code></pre>
<a href='#object-at-index' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h3 id='object-at-index'>Object at index</h3>
<pre class="highlight swift"><code><span class="n">value</span> <span class="o">&lt;--</span> <span class="n">json</span><span class="p">[</span><span class="mi">12</span><span class="p">]</span>
</code></pre>
<a href='#combine-both' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h3 id='combine-both'>Combine both</h3>
<pre class="highlight swift"><code><span class="n">value</span> <span class="o">&lt;--</span> <span class="n">json</span><span class="p">[</span><span class="mi">1</span><span class="p">]?[</span><span class="s">"someKey"</span><span class="p">]?[</span><span class="mi">2</span><span class="p">]?[</span><span class="s">"something.other"</span><span class="p">]</span>
</code></pre>
<a href='#looping-on-array' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h3 id='looping-on-array'>Looping on Array</h3>
<pre class="highlight swift"><code><span class="k">if</span> <span class="k">let</span> <span class="nv">collection</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">collection</span> <span class="p">{</span>
    <span class="k">for</span> <span class="n">jsonEntry</span> <span class="k">in</span> <span class="n">collection</span> <span class="p">{</span>
        <span class="c1">//Do something</span>
    <span class="p">}</span>
<span class="p">}</span>
</code></pre>
<a href='#acknoledgments' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='acknoledgments'>Acknoledgments</h2>

<p>This wouldn&rsquo;t exist without <a href="https://github.com/YannickDot">YannickDot</a>, <a href="https://github.com/damien-nd">Damien-nd</a> and <a href="https://github.com/maxkonovalov">maxkonovalov</a></p>
<a href='#other-repos' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='other-repos'>Other repos ❤️</h2>

<p>Arrow is part of a series of lightweight libraries aiming to make developing iOS Apps a <em>breeze</em> :
- Layout : <a href="https://github.com/s4cha/Stevia">Stevia</a>
- Async code : <a href="https://github.com/s4cha/then">then</a>
- JSON WebServices : <a href="https://github.com/s4cha/ws">ws</a></p>

          </div>
        </section>


      </article>
    </div>
    <section class="footer">
      <p>&copy; 2016 <a class="link" href="https://github.com/s4cha" target="_blank" rel="external">S4cha</a>. All rights reserved. (Last updated: 2016-07-09)</p>
      <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.7.0</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
    </section>
  </body>
</div>
</html>