13.3 JavaScript Object Notation (JSON)

JSON is a text-based format that leverages data structures and basic types found in most programming languages: objects, arrays, strings, and numbers. JSON is commonly used for information exchange between web clients and web servers. Many relational database systems now support JSON, and JSON is the primary data model for many NoSQL systems. MongoDB is one such document database that natively supports storing and querying JSON objects. JSON features in relational databases are described in Section 13.5, and examples of JSON usage in Oracle appear in Section 13.6. Mongo DB is discussed in Chapter 14.

JSON objects are denoted by curly braces { } and arrays are denoted by square brackets [ ]. Each key is a text string enclosed in quotation marks " ". Values in JSON can be a string, number, object, array, Boolean, or null. FIGURE 13.2 shows an example of a JSON object that contains two objects, a corporate customer and an individual customer, that correspond to the CUSTOMERLIST graph of Figure 13.1. The first open curly brace { indicates the beginning of an object, and the last line of the figure is the corresponding closing curly brace } that denotes the end of the object.

Line 1. Open curly brace.
Line 2. Open curly brace.
Line 3. Double quotes customer Type Double quotes colon Double quotes Corporate Double quotes comma
Line 4. Double quotes status Double quotes colon Double quotes Active Double quotes comma
Line 5. Double quotes name Double quotes colon Double quotes Worldwide Travel Agency Double quotes comma
Line 6. Double quotes address Double quotes colon Open curly brace.
Line 7. Double quotes street Double quotes colon Double quotes 10 Main Street Double quotes comma
Line 8. Double quotes city Double quotes colon Double quotes New York City Double quotes comma
Line 9. Double quotes state Double quotes colon Double quotes NY Double quotes comma
Line 10. Double quotes zip Double quotes colon 1 0 0 0 1
Line 11. Close curly brace. comma
Line 12. Double quotes telephone Double quotes colon Open square bracket.
Line 13. Open curly brace.
Line 14. Double quotes type Double quotes colon Double quotes office Double quotes comma
Line 15. Double quotes area Code Double quotes colon Double quotes 2 1 2 Double quotes comma
Line 16. Double quotes phone Double quotes colon Double quotes 1 2 3 4 5 6 7 Double quotes
Line 17. Close curly brace.
Line 18. Close square bracket.
Line 19. Close curly brace. comma
Line 20. Open curly brace.
Line 21. Double quotes customer Type Double quotes colon Double quotes Individual Double quotes comma
Line 22. Double quotes name Double quotes colon Double quotes Mary Jones Double quotes comma
Line 23. Double quotes address Double quotes colon Open curly brace.
Line 24. Double quotes street Double quotes colon Double quotes 2 5 Spruce Street Double quotes comma
Line 25. Double quotes city Double quotes colon Double quotes San Diego Double quotes comma
Line 26. Double quotes state Double quotes colon Double quotes CA Double quotes comma
Line 27. Double quotes zip Double quotes colon 9 2 1 0 1
Line 28. Close curly brace. comma
Line 29. Double quotes telephone Double quotes colon Open square bracket.
Line 30. Open curly brace.
Line 31. Double quotes type Double quotes colon Double quotes home Double quotes comma
Line 32. Double quotes area code Double quotes colon Double quotes 6 1 9 Double quotes comma
Line 33. Double quotes phone Double quotes colon Double quotes 5 5 5 6 7 8 9 Double quotes
Line 34. Close curly brace. comma
Line 35. Open curly brace.
Line 36. Double quotes type Double quotes colon Double quotes mobile Double quotes comma
Line 37. Double quotes area code Double quotes colon Double quotes 6 1 9 Double quotes comma
Line 38. Double quotes phone Double quotes colon Double quotes 4 2 3 1 1 1 4 Double quotes
Line 39. Close curly brace.
Line 40. Close square bracket.
Line 41. Close curly brace.
Line 42. Close curly brace.

FIGURE 13.2 JSON Example of CUSTOMERLIST Data

The first nested object begins on the second line with an opening {. The key "customerType" is the name of a data field, and the string "Corporate" is the value of the field. The values of "customerType", "status", and "name" are all string types. The key "address" has an object as its value (denoted by { and }). The object has three string fields ("street", "city", and "state") and one number field ("zip"). The key "telephone" has an array as its value. The array elements are objects consisting of three fields. The first object (the corporate customer) has only one object in the array telephone. The second object (the individual customer) has two objects in the telephone array. Note that objects can omit fields (the "status" field is not present for the individual customer), and the elements of an array do not have to be the same type. JSON is both case sensitive and type sensitive. Thus, "name", "Name", and "NAME" are not identical, and "10" and 10 are not identical.

There is an Internet Engineering Task Force draft for JSON Schema, a specification language that is intended to be the basis for developers creating validators for JSON. Public domain validators, schema generators, document generators (for testing purposes), and other schema software based on JSON Schema are available online for a variety of programming languages as well as web-browser implementations. An example of a JSON Schema document (which is also a JSON document) is given in FIGURE 13.3. The example illustrates basic specifications to validate objects and arrays, as well as some constraints on strings and number values. More sophisticated validation, such as using regular expressions to describe patterns, can be found in the JSON Schema draft available online at json-schema.org.

Line 1. Open curly brace dot
Line 2. double quotes dollar schema double quotes colon double quotes h t t p s colon 2 forward slashes j s o n hyphen schema dot org forward slash draft forward slash 2019 hyphen 0 9 forward slash schema double quotes comma
Line 3. double quotes dollar id double quotes colon double quotes file colon 3 forward slashes C colon 2 backward slashes Users 2 backward slashes dot dot dot 2 backward slashes customer-schema dot json double quotes comma
Line 4. double quotes title double quotes colon double quotes customer object double quotes comma
Line 5. double quotes description double quotes colon double quotes a customer in a list of customers double quotes comma
Line 6. double quotes type double quotes colon double quotes object double quotes comma
Line 7. double quotes properties double quotes colon Open curly brace dot
Line 8. double quotes customer Type double quotes colon Open curly brace dot
Line 9. double quotes description double quotes colon double quotes type of customer double quotes comma
Line 10. double quotes type double quotes colon double quotes string double quotes comma
Line 11. double quotes enum double quotes colon open square bracket double quotes Corporate double quotes comma double quotes Individual double quotes close square bracket dot
Line 12. Close curly brace comma
Line 13. double quotes status double quotes colon Open curly brace dot
Line 14. double quotes description double quotes colon double quotes active or inactive comma could be null double quotes comma
Line 15. double quotes type double quotes colon double quotes string double quotes
Line 16. Close curly brace comma
Line 17. double quotes name double quotes colon Open curly brace dot
Line 18. double quotes description double quotes colon double quotes company or person name double quotes comma
Line 19. double quotes type double quotes colon double quotes string double quotes
Close curly brace comma
Line 20. double quotes address double quotes colon Open curly brace dot
Line 21. double quotes description double quotes colon double quotes customer address double quotes comma
Line 22. double quotes type double quotes colon double quotes object double quotes comma
Line 23. double quotes properties double quotes colon Open curly brace dot
Line 24. double quotes street double quotes colon Open curly brace dot
Line 25. double quotes description double quotes colon double quotes street name and building number double quotes comma
Line 26. double quotes type double quotes colon double quotes string double quotes
Line 27. Close curly brace comma
Line 28. Double quotes city Double quotes colon Open curly brace
Line 29. Double quotes description Double quotes colon Double quotes city name Double quotes comma
Line 30. Double quotes type Double quotes colon Double quotes string Double quotes
Line 31. Close curly brace comma
Line 32. Double quotes state Double quotes colon Open curly brace
Line 33. Double quotes description Double quotes colon Double quotes 2 letter US postal abbreviation Double quotes comma
Line 34. Double quotes type Double quotes colon Double quotes string Double quotes comma
Line 35. Double quotes max Length Double quotes colon 2
Line 36. Close curly brace comma
Line 37. Double quotes zip Double quotes colon Open curly brace
Line 38. Double quotes description Double quotes colon Double quotes 5 digit U S zip code Double quotes comma
Line 39. Double quotes type Double quotes colon Double quotes number Double quotes comma
Line 40. Double quotes minimum Double quotes colon 0 0 5 0 1 comma
Line 41. Double quotes maximum Double quotes colon 9 9 9 5 0
Line 42. Close curly brace
Line 43. Close curly brace
Line 44. Close curly brace comma
Line 45. Double quotes telephone Double quotes colon Open curly brace
Line 46. Double quotes description Double quotes colon Double quotes one or more telephone numbers Double quotes comma
Line 47. Double quotes type Double quotes colon Double quotes array Double quotes comma
Line 48. Double quotes items Double quotes colon Open curly brace
Line 49. Double quotes type Double quotes colon Double quotes object Double quotes comma
Line 50. Double quotes properties Double quotes colon Open curly brace
Line 51. Double quotes phone Type Double quotes colon Open curly brace
Line 52. Double quotes description Double quotes colon Double quotes type of phone Double quotes comma
Line 53. Double quotes type Double quotes colon Double quotes string Double quotes comma
Line 54. Double quotes e n u m Double quotes colon open square bracket Double quotes home Double quotes comma Double quotes mobile Double quotes comma Double quotes office Double quotes close square bracket
Line 55. Close curly brace comma
Line 56. Double quotes area Code Double quotes colon Open curly brace
Line 57. Double quotes description Double quotes colon Double quotes 3 digit area code Double quotes comma
Line 58. Double quotes type Double quotes colon Double quotes string Double quotes comma
Line 59. Double quotes max Length Double quotes colon 3
Line 60. Close curly brace comma
Line 61. Double quotes phone Double quotes colon Open curly brace
Line 62. Double quotes description Double quotes colon Double quotes 3 digits comma space comma 4 digits Double quotes comma
Line 63. Double quotes type Double quotes colon Double quotes string Double quotes comma
Line 64. Double quotes max Length Double quotes colon 8
Line 65. Close curly brace
Line 66. Close curly brace
Line 67. Close curly brace comma
Line 68. Double quotes min Items Double quotes colon 1
Line 69. Close curly brace
Line 70. Close curly brace comma
Line 71. Double quotes required Double quotes colon open square bracket Double quotes customer Type Double quotes comma Double quotes telephone Double quotes close square bracket comma
Line 72. Double quotes additional Properties Double quotes colon false
Line 73. Close curly brace
Line 1. Open curly brace dot
Line 2. double quotes dollar schema double quotes colon double quotes h t t p s colon 2 forward slashes j s o n hyphen schema dot org forward slash draft forward slash 2019 hyphen 0 9 forward slash schema double quotes comma
Line 3. double quotes dollar id double quotes colon double quotes file colon 3 forward slashes C colon 2 backward slashes Users 2 backward slashes dot dot dot 2 backward slashes customer-schema dot json double quotes comma
Line 4. double quotes title double quotes colon double quotes customer object double quotes comma
Line 5. double quotes description double quotes colon double quotes a customer in a list of customers double quotes comma
Line 6. double quotes type double quotes colon double quotes object double quotes comma
Line 7. double quotes properties double quotes colon Open curly brace dot
Line 8. double quotes customer Type double quotes colon Open curly brace dot
Line 9. double quotes description double quotes colon double quotes type of customer double quotes comma
Line 10. double quotes type double quotes colon double quotes string double quotes comma
Line 11. double quotes enum double quotes colon open square bracket double quotes Corporate double quotes comma double quotes Individual double quotes close square bracket dot
Line 12. Close curly brace comma
Line 13. double quotes status double quotes colon Open curly brace dot
Line 14. double quotes description double quotes colon double quotes active or inactive comma could be null double quotes comma
Line 15. double quotes type double quotes colon double quotes string double quotes
Line 16. Close curly brace comma
Line 17. double quotes name double quotes colon Open curly brace dot
Line 18. double quotes description double quotes colon double quotes company or person name double quotes comma
Line 19. double quotes type double quotes colon double quotes string double quotes
Close curly brace comma
Line 20. double quotes address double quotes colon Open curly brace dot
Line 21. double quotes description double quotes colon double quotes customer address double quotes comma
Line 22. double quotes type double quotes colon double quotes object double quotes comma
Line 23. double quotes properties double quotes colon Open curly brace dot
Line 24. double quotes street double quotes colon Open curly brace dot
Line 25. double quotes description double quotes colon double quotes street name and building number double quotes comma
Line 26. double quotes type double quotes colon double quotes string double quotes
Line 27. Close curly brace comma
Line 28. Double quotes city Double quotes colon Open curly brace
Line 29. Double quotes description Double quotes colon Double quotes city name Double quotes comma
Line 30. Double quotes type Double quotes colon Double quotes string Double quotes
Line 31. Close curly brace comma
Line 32. Double quotes state Double quotes colon Open curly brace
Line 33. Double quotes description Double quotes colon Double quotes 2 letter US postal abbreviation Double quotes comma
Line 34. Double quotes type Double quotes colon Double quotes string Double quotes comma
Line 35. Double quotes max Length Double quotes colon 2
Line 36. Close curly brace comma
Line 37. Double quotes zip Double quotes colon Open curly brace
Line 38. Double quotes description Double quotes colon Double quotes 5 digit U S zip code Double quotes comma
Line 39. Double quotes type Double quotes colon Double quotes number Double quotes comma
Line 40. Double quotes minimum Double quotes colon 0 0 5 0 1 comma
Line 41. Double quotes maximum Double quotes colon 9 9 9 5 0
Line 42. Close curly brace
Line 43. Close curly brace
Line 44. Close curly brace comma
Line 45. Double quotes telephone Double quotes colon Open curly brace
Line 46. Double quotes description Double quotes colon Double quotes one or more telephone numbers Double quotes comma
Line 47. Double quotes type Double quotes colon Double quotes array Double quotes comma
Line 48. Double quotes items Double quotes colon Open curly brace
Line 49. Double quotes type Double quotes colon Double quotes object Double quotes comma
Line 50. Double quotes properties Double quotes colon Open curly brace
Line 51. Double quotes phone Type Double quotes colon Open curly brace
Line 52. Double quotes description Double quotes colon Double quotes type of phone Double quotes comma
Line 53. Double quotes type Double quotes colon Double quotes string Double quotes comma
Line 54. Double quotes e n u m Double quotes colon open square bracket Double quotes home Double quotes comma Double quotes mobile Double quotes comma Double quotes office Double quotes close square bracket
Line 55. Close curly brace comma
Line 56. Double quotes area Code Double quotes colon Open curly brace
Line 57. Double quotes description Double quotes colon Double quotes 3 digit area code Double quotes comma
Line 58. Double quotes type Double quotes colon Double quotes string Double quotes comma
Line 59. Double quotes max Length Double quotes colon 3
Line 60. Close curly brace comma
Line 61. Double quotes phone Double quotes colon Open curly brace
Line 62. Double quotes description Double quotes colon Double quotes 3 digits comma space comma 4 digits Double quotes comma
Line 63. Double quotes type Double quotes colon Double quotes string Double quotes comma
Line 64. Double quotes max Length Double quotes colon 8
Line 65. Close curly brace
Line 66. Close curly brace
Line 67. Close curly brace comma
Line 68. Double quotes min Items Double quotes colon 1
Line 69. Close curly brace
Line 70. Close curly brace comma
Line 71. Double quotes required Double quotes colon open square bracket Double quotes customer Type Double quotes comma Double quotes telephone Double quotes close square bracket comma
Line 72. Double quotes additional Properties Double quotes colon false
Line 73. Close curly brace

FIGURE 13.3 JSON Schema Document

In Figure 13.3 the first two keys, $schema and $id, are required schema keywords that specify which JSON Schema draft version is being applied and the URI for the schema file itself, respectively. The draft used in the example is version 2019-09. The file is a local path with details replaced with “…”; note that the backslash character is an escape character in JSON and must be represented by \ in the URI. The keys title and description are annotations that provide information but do not place any requirements on the input that is being validated. The remaining keywords are assertions that describe what a valid input document conforms to or looks like. The keyword type identifies a JSON type. The first usage of type indicates that the schema definition is intended to validate an object. Subsequent usages of type are used to enforce JSON types for the keys in the object, as well as for nested objects and arrays.

In the example, we illustrate that objects can have properties (the keys in the object), properties can be required (both customerType and telephone must be present in any valid object), and the object can be limited to the specified properties by setting additionalProperties to false (the default is to enforce the specified constraints but also allow any additional keys and values to be ignored by the validator). Assertions that are enforced for the input are as follows:

  • The keys customerType, status, and name have values that are type string.

  • The two values that are valid for customerType are given by the enum array with values Corporate and Individual.

  • address is a nested object with four keys (street, city, state, and zip). Additional constraints on state limit it to two letters, and zip has a minimum and maximum value.

  • telephone is an array of objects. In order to enforce that there is at least one telephone value per customer object, the telephone key must be required, and then the array must have at least one element (enforced by minItems set to 1).

JSON Schema, while not yet an adopted standard, has ample potential for data integrity specification and enforcement.

JSON and XML (described in Section 13.4), are both human and machine readable; both are intended to be self-describing formats for facilitating data exchange between applications. JSON is popular with developers because it tends to be shorter and easier to write because end tags are not required. JSON supports arrays whereas XML does not; however, JSON data must be validated in program code or by using a draft version of JSON Schema. XML is commonly used for enterprise-level data exchange where validation or data integrity enforcement is required. XML has two standards for specifying data, both illustrated in Section 13.4, which allow constraints to be specified separate from program code and enforced by a parser. The constraints include regular expressions for string values as well as ranges and formats for numbers. There is no standard query language associated specifically with JSON; however, some document databases (such as MongoDB, discussed in Chapter 14) support sophisticated querying of JSON documents.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.16.82.82