One document matched: draft-pbryan-zyp-json-pointer-00.xml


<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2396 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2396.xml">
<!ENTITY RFC2616 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2616.xml">
<!ENTITY RFC4627 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4627.xml">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc strict="yes" ?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<rfc category="info" docName="draft-pbryan-zyp-json-pointer-00" ipr="trust200902">

    <front>
        <title abbrev="JSON Pointer">JSON Pointer </title>
        <author fullname="Paul C. Bryan" initials="P." surname="Bryan" role="editor">
            <organization>ForgeRock US, Inc.</organization>
            <address>
                <postal>
                    <street>201 NE Park Plaza Drive Suite 196</street>
                    <city>Vancouver</city>
                    <region>WA</region>
                    <code>98684</code>
                    <country>USA</country>
                </postal>
                <phone>+1 604 783 1481</phone>
                <email>paul.bryan@forgerock.com</email>
            </address>
        </author>
        <author fullname="Kris Zyp" initials="K." surname="Zyp">
            <organization>SitePen (USA)</organization>
            <address>
                <postal>
                    <street>530 Lytton Avenue</street>
                    <city>Palo Alto</city>
                    <region>CA</region>
                    <code>94301</code>
                    <country>USA</country>
                </postal>
                <phone>+1 650 968 8787</phone>
                <email>kris@sitepen.com</email>
            </address>
            
        </author>
        <date year="2011" />
        <area>General</area>
        <workgroup>Internet Engineering Task Force</workgroup>
        <keyword>json</keyword>
        <abstract>
            <t>JSON Pointer provides a syntax for identifying a specific node within a JSON
            document.</t>
        </abstract>
    </front>

    <middle>
        <section title="Introduction">
            <t>This Internet-Draft proposes JSON Pointer, a syntax for identifying a specific
            node within a <xref target="RFC4627">JSON</xref> document. The syntax is intended
            to be expressed in a JSON string value or in a URL fragment identifier for
            a resource with a JSON representation.</t>
        </section>
        <section title="Conventions">
            <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
            "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be
            interpreted as described in <xref target="RFC2119"/>.</t>
        </section>
        <section title="Syntax">
            <t><figure>
            <preamble>A JSON Pointer is a sequence of zero or more property reference tokens,
            starting with and separated by the "/" (\x2F) character. Each property reference
            token is a sequence of unreserved characters or escape sequences per
            <xref target="RFC2396"/>.</preamble>
            <artwork><![CDATA[
pointer = "/" 0*1( token *( "/" token ) )
token = 1*<URI unreserved character or escape sequence>
]]>         </artwork></figure></t>
            <t>It is an error condition if a JSON Pointer does not conform to this syntax.</t>
        </section>
        <section title="Evaluation">
        <t>A JSON Pointer is evaluated against a target JSON document and yields a target
        node. Evaluation begins with the initial target node being the JSON document itself.
        For each property reference token, a new target node is selected from the current
        target node.</t>
        <t>If the current target node is a JSON object, then the new target is the value of
        the property with the name identified by the next property reference token. If the
        current target node is a JSON array, then the new target is the value of the item in
        the array with the zero-based index identified by the next property reference token
        (which MUST be a non-negative integer number value).</t>
        <t>It is an error condition if a property reference token fails to resolve a value for
        the current target node. The target node is successively updated for each property
        reference token until the entire sequence of property reference tokens is
        evaluated.</t>
        <t>Property names SHOULD be URI encoded per <xref target="RFC2396"/>. In particular,
        any "/" character in a property name MUST be encoded as "%2F" to avoid being
        interpreted as a property reference token separator.</t>
        </section>
   
        <section anchor="Errors" title="Error Handling">
            <t>In the event of an error condition, evaluation of the JSON Pointer fails to
            complete.</t>
        </section>

        <section title="Acknowledgements">
            <t>This specification originated from the
            <xref target="JSON Schema"/> specification.</t>
        </section>

        <section anchor="IANA" title="IANA Considerations">
            <t>This draft includes no request to IANA.</t>
        </section>

        <section anchor="Security" title="Security Considerations">
            <t>This draft includes no security considerations.</t>
        </section>
    </middle>

    <back>
        <references title="Normative References">
          &RFC2119;
          &RFC2396;
          &RFC4627;
        </references>

        <references title="Informative References">
            <reference anchor="JSON Schema" target="http://tools.ietf.org/html/draft-zyp-json-schema-03">
            <front>
                <title>A JSON Media Type for Describing the Structure and Meaning of JSON Documents</title>
                <author initials="K." surname="Zyp">
                    <organization>SitePen (USA)</organization>
                </author>
                <author initials="G." surname="Court">
                    <organization/>
                </author>
                <date year="2010" month="November" />
            </front>
            </reference>
        </references>

        <section title="Examples">
            <t>
                <figure>
                    <preamble>For example, for the following JSON representation:</preamble>
                    <artwork><![CDATA[
{
    "foo": {
        "anArray": [
            { "prop": 44 }
        ],
        "another prop": {
            "baz": "A string"
        }
    }
}
]]>                 </artwork>
                </figure>
                <figure>
                    <preamble>The following JSON Pointers would be resolved:</preamble>
                    <artwork><![CDATA[
JSON Pointer             resolution
-------------------      ----------
/                        self, the root of the resource itself
/foo                     the object referred to by the foo property
/foo/another%20prop      the object referred to by the "another prop"
                         property of the object referred to by the
                         "foo" property
/foo/another%20prop/baz  the string referred to by the value of "baz"
                         property of the "another prop" property of
                         the object referred to by the "foo" property
/foo/anArray/0           the first object in the "anArray" array
]]>             </artwork>
            </figure>
        </t>
        </section>
        
        <section title="Changelog">
            <t>
                <list style="hanging">
                    <t hangText="draft-00">
                        <list>
                            <t>Initial draft.</t>
                        </list>
                    </t>
                </list>
            </t>
        </section>

        <section anchor="Issues" title="Open Issues">
            <t>TBD</t>
        </section>

    </back>

</rfc>

PAFTECH AB 2003-20262026-04-23 20:33:59