You are here: Web Services > Working with JSON Data > Using XPRIM_RandomAccessJsonReader to Read JSON Values > Read…WithPath

Read…WithPath

You use the Read…WithPath methods to read a value whose location in the JSON data is specified by a path. A path is a sequence of member name and array index, separated by a forward slash.

For example, using the previous JSON string example:

{

    "name":
    {

        "given": "John",

        "surname": "Smith"

    }, . . .

The path to the "given" member value (John) is "name/given".

And still using the JSON string from the previous example:

{

    . . .

    "contactNo":

    [

        { area: "02", no: "9378 2867", type: "landline" },

        { no: "0468 732 371", type: "mobile" }

    ]

The path to the area code of the first contact number is "contactNo/1/area".

Note that indexes are always 1-based, which is a standard in RDML.

Let's now put it into practice.

We want to get the value of the "given" and "surname" members:

#GivenName := #Reader.ReadStringWithPath("name/given")

#Surname := #Reader.ReadStringWithPath("name/surname")

We can also open and enter the "name" object so we don't have to repeat the "name" segment in the path:

#Reader.BeginObjectWithPath("name")

#GivenName := #Reader.ReadStringWithPath("given")

#Surname := #Reader.ReadStringWithPath("surname")

#Reader.EndObject

To get the contact number type of the first contact number:

#ContactNoType := #Reader.ReadStringWithPath("contactNo/1/type")

Or you can navigate into the first element of "contactNo" first, then get the "type" value:

#Reader.BeginObjectWithPath("contactNo/1")

#ContactNoType := #Reader.ReadStringWithPath("type")

#Reader.EndObject

Next: Read…WithName