---
product: Chilkat
product_version: 11.7.0
language: pascal
language_label: Lazarus Pascal
class: JsonObject
license: free
deprecated: false
reference_html: https://www.chilkatsoft.com/refdoc/pascal_JsonObjectRef.html
---
# Chilkat JsonObject — Lazarus Pascal — v11.7.0

> Chilkat 11.7.0 · language=pascal · class=JsonObject
> Other versions: replace `11.7.0` in this URL. Other languages: `https://www.chilkatsoft.com/ai-docs/v/11.7.0/<lang>/classes/JsonObject.md`.
> Language-wide rules (install, unlock, error model, strings/bytes): `https://www.chilkatsoft.com/ai-docs/v/11.7.0/pascal/guide.md`.

## Purpose

**Load, navigate, create, modify, search, sort, and emit JSON objects.**

`Chilkat.JsonObject` provides DOM-style access to JSON objects. It can load, inspect, modify, create, search, sort, emit, and save JSON data. It supports path-based access, index-based member access, automatic creation of nested paths, object and array references, Firebase-style updates, record searches, date/time conversion, binary data encoding, variable substitution, and optional secure secret resolution.

**Load and emit JSON**

Load JSON from strings, files, buffers, or Chilkat objects, then emit the result as compact or pretty-formatted JSON.

**Path-based navigation**

Read and update nested values using JSON paths, with support for automatically creating missing object or array paths.

**Member access**

Access object members by name or index, inspect member types, retrieve values, and remove or rename members as needed.

**Nested objects and arrays**

Work directly with child `JsonObject` and `JsonArray` references to navigate and modify complex JSON structures.

**Search and transform**

Search records, sort object members, perform Firebase-style updates, and prepare JSON for API requests or application storage.

**Special value handling**

Handle date/time values, binary data encodings, exact numeric text, variable substitution, and secure secret resolution.

**Common pattern:** Load or create a `JsonObject`, navigate named members and nested paths, retrieve child arrays as `JsonArray` objects when ordered lists are encountered, update values as needed, then emit or save the final JSON. Use `JsonObject` for named JSON members and `JsonArray` for ordered lists.

For an extended overview, see [JsonObject Class Overview](https://www.chilkatsoft.com/jsonobject_class_overview.asp).

## Object creation, unlocking and error handling

**Create / Free**

```pascal
uses
  Chilkat.JsonObject;

var
  obj: TJsonObject;
begin
  obj := TJsonObject.Create;
  try
    if not obj.IsValid then
      raise Exception.Create('Failed to create a TJsonObject instance.');

    // ... use obj ...

  finally
    obj.Free;
  end;
end;
```

`constructor Create;`

Allocates the underlying CkJsonObject object and returns a new TJsonObject instance. Simply adding **Chilkat.JsonObject** to the unit's `uses` clause is enough to locate and bind to the Chilkat shared library (DLL / .so / .dylib) at runtime — no separate load step is required. Check `obj.IsValid` after calling `Create`; it is `False` if the underlying library could not be found/loaded or the object could not be allocated (for example, when unlicensed).

`destructor Destroy; override;`

Every TJsonObject created by calling `Create` should eventually be released by calling `.Free` (inherited from `TObject`). The destructor automatically disposes the underlying CkJsonObject handle. A native (unmanaged) memory leak occurs if the object is never freed.

Call `Global.UnlockBundle` once at the start of the program, before using this or any other Chilkat class. Any string unlocks a fully functional 30-day trial; a purchased unlock code is used in production. See `guide.md` for the exact code in Lazarus Pascal.

## Members common to every Chilkat class

Documented once per language in `common-members.md`; listed here so this page is self-contained.

| Property | Signature | Access | Meaning |
|---|---|---|---|
| `DebugLogFilePath` | `property DebugLogFilePath: string read GetDebugLogFilePath write SetDebugLogFilePath;` | read/write | If set to a file path, this property logs the LastErrorText of each Chilkat method or property call to the specified file. |
| `LastErrorHtml` | `property LastErrorHtml: string read GetLastErrorHtml;` | read-only | Provides HTML-formatted information about the last called method or property. |
| `LastErrorText` | `property LastErrorText: string read GetLastErrorText;` | read-only | Provides plain text information about the last called method or property. |
| `LastErrorXml` | `property LastErrorXml: string read GetLastErrorXml;` | read-only | Provides XML-formatted information about the last called method or property. |
| `LastMethodSuccess` | `property LastMethodSuccess: Boolean read GetLastMethodSuccess write SetLastMethodSuccess;` | read/write | Indicates the success or failure of the most recent method call: `True` means success, `False` means failure. |
| `VerboseLogging` | `property VerboseLogging: Boolean read GetVerboseLogging write SetVerboseLogging;` | read/write | If set to `True`, then the contents of LastErrorText (or LastErrorXml, or LastErrorHtml) may contain more verbose information. |
| `Version` | `property Version: string read GetVersion;` | read-only | Version of the component/library, such as "10.1.0" |

## Member index

| Member | Kind | Signature |
|---|---|---|
| `DelimiterChar` | property, read/write | `property DelimiterChar: string read GetDelimiterChar write SetDelimiterChar;` |
| `EmitCompact` | property, read/write | `property EmitCompact: Boolean read GetEmitCompact write SetEmitCompact;` |
| `EmitCrLf` | property, read/write | `property EmitCrLf: Boolean read GetEmitCrLf write SetEmitCrLf;` |
| `EnableSecrets` | property, read/write | `property EnableSecrets: Boolean read GetEnableSecrets write SetEnableSecrets;` |
| `I` | property, read/write | `property I: Integer read GetI write SetI;` |
| `J` | property, read/write | `property J: Integer read GetJ write SetJ;` |
| `K` | property, read/write | `property K: Integer read GetK write SetK;` |
| `LowerCaseNames` | property, read/write | `property LowerCaseNames: Boolean read GetLowerCaseNames write SetLowerCaseNames;` |
| `PathPrefix` | property, read/write | `property PathPrefix: string read GetPathPrefix write SetPathPrefix;` |
| `Size` | property, read-only | `property Size: Integer read GetSize;` |
| `Strict` | property, read/write | `property Strict: Boolean read GetStrict write SetStrict;` |
| `UncommonOptions` | property, read/write | `property UncommonOptions: string read GetUncommonOptions write SetUncommonOptions;` |
| `AddArrayAt` | method | `function AddArrayAt(index: Integer;     const name: string): Boolean;` |
| `AddArrayCopyAt` | method | `// jarr is a TJsonArray object. function AddArrayCopyAt(index: Integer;     const name: string;     jarr: TChilkatBase): Boolean;` |
| `AddBoolAt` | method | `function AddBoolAt(index: Integer;     const name: string;     value: Boolean): Boolean;` |
| `AddIntAt` | method | `function AddIntAt(index: Integer;     const name: string;     value: Integer): Boolean;` |
| `AddNullAt` | method | `function AddNullAt(index: Integer;     const name: string): Boolean;` |
| `AddNumberAt` | method | `function AddNumberAt(index: Integer;     const name: string;     const numericStr: string): Boolean;` |
| `AddObjectAt` | method | `function AddObjectAt(index: Integer;     const name: string): Boolean;` |
| `AddObjectCopyAt` | method | `// jsonObj is a TJsonObject object. function AddObjectCopyAt(index: Integer;     const name: string;     jsonObj: TChilkatBase): Boolean;` |
| `AddStringAt` | method | `function AddStringAt(index: Integer;     const name: string;     const value: string): Boolean;` |
| `AppendArray` | method | `// Return value is a TJsonArray object. function AppendArray(const name: string): TChilkatBase;` |
| `AppendArray2` | method | `// jarr is a TJsonArray object. function AppendArray2(const name: string;     jarr: TChilkatBase): Boolean;` |
| `AppendArrayCopy` | method | `// jarr is a TJsonArray object. function AppendArrayCopy(const name: string;     jarr: TChilkatBase): Boolean;` |
| `AppendBool` | method | `function AppendBool(const name: string;     value: Boolean): Boolean;` |
| `AppendInt` | method | `function AppendInt(const name: string;     value: Integer): Boolean;` |
| `AppendObject` | method | `// Return value is a TJsonObject object. function AppendObject(const name: string): TChilkatBase;` |
| `AppendObject2` | method | `// jsonObj is a TJsonObject object. function AppendObject2(const name: string;     jsonObj: TChilkatBase): Boolean;` |
| `AppendObjectCopy` | method | `// jsonObj is a TJsonObject object. function AppendObjectCopy(const name: string;     jsonObj: TChilkatBase): Boolean;` |
| `AppendString` | method | `function AppendString(const name: string;     const value: string): Boolean;` |
| `AppendStringArray` | method | `// values is a TStringTable object. function AppendStringArray(const name: string;     values: TChilkatBase): Boolean;` |
| `ArrayAt` | method | `// Return value is a TJsonArray object. function ArrayAt(index: Integer): TChilkatBase;` |
| `ArrayAt2` | method | `// jarr is a TJsonArray object. function ArrayAt2(index: Integer;     jarr: TChilkatBase): Boolean;` |
| `ArrayOf` | method | `// Return value is a TJsonArray object. function ArrayOf(const jsonPath: string): TChilkatBase;` |
| `ArrayOf2` | method | `// jarr is a TJsonArray object. function ArrayOf2(const jsonPath: string;     jarr: TChilkatBase): Boolean;` |
| `BoolAt` | method | `function BoolAt(index: Integer): Boolean;` |
| `BoolOf` | method | `function BoolOf(const jsonPath: string): Boolean;` |
| `BytesOf` | method | `// bd is a TBinData object. function BytesOf(const jsonPath: string;     const encoding: string;     bd: TChilkatBase): Boolean;` |
| `Clear` | method | `procedure Clear;` |
| `CopyRef` | method | `// jsonObj is a TJsonObject object. function CopyRef(jsonObj: TChilkatBase): Boolean;` |
| `DateOf` | method | `// dt is a TCkDateTime object. function DateOf(const jsonPath: string;     dt: TChilkatBase): Boolean;` |
| `Delete` | method | `function Delete(const name: string): Boolean;` |
| `DeleteAt` | method | `function DeleteAt(index: Integer): Boolean;` |
| `DeleteRecords` | method | `function DeleteRecords(const arrayPath: string;     const relpath: string;     const value: string;     caseSensitive: Boolean): Integer;` |
| `DtOf` | method | `// dt is a TDtObj object. function DtOf(const jsonPath: string;     bLocal: Boolean;     dt: TChilkatBase): Boolean;` |
| `Emit` | method | `function Emit: string;` |
| `EmitBd` | method | `// bd is a TBinData object. function EmitBd(bd: TChilkatBase): Boolean;` |
| `EmitSb` | method | `// sb is a TStringBuilder object. function EmitSb(sb: TChilkatBase): Boolean;` |
| `EmitWithSubs` | method | `// subs is a THashtable object. function EmitWithSubs(subs: TChilkatBase;     omitEmpty: Boolean): string;` |
| `FindObjectWithMember` | method | `// Return value is a TJsonObject object. function FindObjectWithMember(const name: string): TChilkatBase;` |
| `FindObjectWithMember2` | method | `// jsonObj is a TJsonObject object. function FindObjectWithMember2(const name: string;     jsonObj: TChilkatBase): Boolean;` |
| `FindRecord` | method | `// Return value is a TJsonObject object. function FindRecord(const arrayPath: string;     const relPath: string;     const value: string;     caseSensitive: Boolean): TChilkatBase;` |
| `FindRecord2` | method | `// jsonObj is a TJsonObject object. function FindRecord2(const arrayPath: string;     const relPath: string;     const value: string;     caseSensitive: Boolean;     jsonObj: TChilkatBase): Boolean;` |
| `FindRecordString` | method | `function FindRecordString(const arrayPath: string;     const relPath: string;     const value: string;     caseSensitive: Boolean;     const retRelPath: string): string;` |
| `FirebaseApplyEvent` | method | `function FirebaseApplyEvent(const name: string;     const data: string): Boolean;` |
| `FirebasePatch` | method | `function FirebasePatch(const jsonPath: string;     const jsonData: string): Boolean;` |
| `FirebasePut` | method | `function FirebasePut(const jsonPath: string;     const value: string): Boolean;` |
| `GetDocRoot` | method | `// Return value is a TJsonObject object. function GetDocRoot: TChilkatBase;` |
| `GetDocRoot2` | method | `// docRoot is a TJsonObject object. function GetDocRoot2(docRoot: TChilkatBase): Boolean;` |
| `HasMember` | method | `function HasMember(const jsonPath: string): Boolean;` |
| `IndexOf` | method | `function IndexOf(const name: string): Integer;` |
| `IntAt` | method | `function IntAt(index: Integer): Integer;` |
| `IntOf` | method | `function IntOf(const jsonPath: string): Integer;` |
| `IsNullAt` | method | `function IsNullAt(index: Integer): Boolean;` |
| `IsNullOf` | method | `function IsNullOf(const jsonPath: string): Boolean;` |
| `JsonTypeOf` | method | `function JsonTypeOf(const jsonPath: string): Integer;` |
| `Load` | method | `function Load(const json: string): Boolean;` |
| `LoadBd` | method | `// bd is a TBinData object. function LoadBd(bd: TChilkatBase): Boolean;` |
| `LoadFile` | method | `function LoadFile(const path: string): Boolean;` |
| `LoadPredefined` | method | `function LoadPredefined(const name: string): Boolean;` |
| `LoadSb` | method | `// sb is a TStringBuilder object. function LoadSb(sb: TChilkatBase): Boolean;` |
| `MakeCopy` | method | `// json is a TJsonObject object. function MakeCopy(json: TChilkatBase): Boolean;` |
| `MoveMember` | method | `function MoveMember(fromIndex: Integer;     toIndex: Integer): Boolean;` |
| `NameAt` | method | `function NameAt(index: Integer): string;` |
| `NewArrayOf` | method | `function NewArrayOf(const path: string;     const jArr: string): Boolean;` |
| `NewObjectOf` | method | `function NewObjectOf(const path: string;     const jObj: string): Boolean;` |
| `ObjectAt` | method | `// Return value is a TJsonObject object. function ObjectAt(index: Integer): TChilkatBase;` |
| `ObjectAt2` | method | `// jsonObj is a TJsonObject object. function ObjectAt2(index: Integer;     jsonObj: TChilkatBase): Boolean;` |
| `ObjectOf` | method | `// Return value is a TJsonObject object. function ObjectOf(const jsonPath: string): TChilkatBase;` |
| `ObjectOf2` | method | `// jsonObj is a TJsonObject object. function ObjectOf2(const jsonPath: string;     jsonObj: TChilkatBase): Boolean;` |
| `Predefine` | method | `function Predefine(const name: string): Boolean;` |
| `Rename` | method | `function Rename(const oldName: string;     const newName: string): Boolean;` |
| `RenameAt` | method | `function RenameAt(index: Integer;     const name: string): Boolean;` |
| `SetBoolAt` | method | `function SetBoolAt(index: Integer;     value: Boolean): Boolean;` |
| `SetBoolOf` | method | `function SetBoolOf(const jsonPath: string;     value: Boolean): Boolean;` |
| `SetIntAt` | method | `function SetIntAt(index: Integer;     value: Integer): Boolean;` |
| `SetIntOf` | method | `function SetIntOf(const jsonPath: string;     value: Integer): Boolean;` |
| `SetNullAt` | method | `function SetNullAt(index: Integer): Boolean;` |
| `SetNullOf` | method | `function SetNullOf(const jsonPath: string): Boolean;` |
| `SetNumberAt` | method | `function SetNumberAt(index: Integer;     const value: string): Boolean;` |
| `SetNumberOf` | method | `function SetNumberOf(const jsonPath: string;     const value: string): Boolean;` |
| `SetStringAt` | method | `function SetStringAt(index: Integer;     const value: string): Boolean;` |
| `SetStringOf` | method | `function SetStringOf(const jsonPath: string;     const value: string): Boolean;` |
| `SizeOfArray` | method | `function SizeOfArray(const jsonPath: string): Integer;` |
| `Sort` | method | `procedure Sort(ascending: Boolean;     caseSensitive: Boolean);` |
| `StringAt` | method | `function StringAt(index: Integer): string;` |
| `StringOf` | method | `function StringOf(const jsonPath: string): string;` |
| `StringOfEquals` | method | `function StringOfEquals(const jsonPath: string;     const value: string;     caseSensitive: Boolean): Boolean;` |
| `StringOfSb` | method | `// sb is a TStringBuilder object. function StringOfSb(const jsonPath: string;     sb: TChilkatBase): Boolean;` |
| `Swap` | method | `function Swap(index1: Integer;     index2: Integer): Boolean;` |
| `TypeAt` | method | `function TypeAt(index: Integer): Integer;` |
| `UIntOf` | method | `function UIntOf(const jsonPath: string): LongWord;` |
| `UpdateBd` | method | `// bd is a TBinData object. function UpdateBd(const jsonPath: string;     const encoding: string;     bd: TChilkatBase): Boolean;` |
| `UpdateBool` | method | `function UpdateBool(const jsonPath: string;     value: Boolean): Boolean;` |
| `UpdateInt` | method | `function UpdateInt(const jsonPath: string;     value: Integer): Boolean;` |
| `UpdateNewArray` | method | `function UpdateNewArray(const jsonPath: string): Boolean;` |
| `UpdateNewObject` | method | `function UpdateNewObject(const jsonPath: string): Boolean;` |
| `UpdateNull` | method | `function UpdateNull(const jsonPath: string): Boolean;` |
| `UpdateNumber` | method | `function UpdateNumber(const jsonPath: string;     const numericStr: string): Boolean;` |
| `UpdateSb` | method | `// sb is a TStringBuilder object. function UpdateSb(const jsonPath: string;     sb: TChilkatBase): Boolean;` |
| `UpdateString` | method | `function UpdateString(const jsonPath: string;     const value: string): Boolean;` |
| `UpdateUInt` | method | `function UpdateUInt(const jsonPath: string;     value: LongWord): Boolean;` |
| `WriteFile` | method | `function WriteFile(const path: string): Boolean;` |

## Properties

### JsonObject.DelimiterChar

`Chilkat 11.7.0 · pascal · JsonObject · DelimiterChar · property · read/write · since 9.5.0.58`

```pascal
property DelimiterChar: string read GetDelimiterChar write SetDelimiterChar;
```

Specifies the character used to separate object-member names in Chilkat JSON paths. The default is `.`. Set it to `/` for Firebase-style paths. This property should contain exactly one character.

**Arrays in paths:** Array indexes continue to use square brackets, such as `orders[0].id`. If a member name itself contains a path-separator character, quote that path component with double quotes.

### JsonObject.EmitCompact

`Chilkat 11.7.0 · pascal · JsonObject · EmitCompact · property · read/write · since 9.5.0.56`

```pascal
property EmitCompact: Boolean read GetEmitCompact write SetEmitCompact;
```

Controls whether emitted JSON is compact or pretty-printed. The default is `True`.

|  |  |
| --- | --- |
| `True` | Emit a compact representation with no extra formatting whitespace. |
| `False` | Emit indented, human-readable JSON. |

**JSON semantics:** Formatting whitespace does not change the JSON data. Use compact output for transport/storage and pretty output for diagnostics or human review.

### JsonObject.EmitCrLf

`Chilkat 11.7.0 · pascal · JsonObject · EmitCrLf · property · read/write · since 9.5.0.56`

```pascal
property EmitCrLf: Boolean read GetEmitCrLf write SetEmitCrLf;
```

Controls line endings when pretty-printed JSON is emitted (`EmitCompact = False`). The default is `True`.

|  |  |
| --- | --- |
| `True` | Use CRLF line endings. |
| `False` | Use LF line endings. |

**Compact output:** This setting has no effect when `EmitCompact` is `True` because compact JSON is emitted without formatting line breaks.

### JsonObject.EnableSecrets

`Chilkat 11.7.0 · pascal · JsonObject · EnableSecrets · property · read/write · since 11.5.0`

```pascal
property EnableSecrets: Boolean read GetEnableSecrets write SetEnableSecrets;
```

**Full documentation for this property (same in every language):** [More Detailed Information About EnableSecrets](https://www.chilkatsoft.com/ai-docs/v/11.7.0/articles/secret_specification_strings.md)

Enables automatic resolution of Chilkat secret specification strings for supported string-setting methods. The default is `False`. When enabled, a value beginning with `!!` can identify a credential stored in Windows Credential Manager or Apple Keychain instead of embedding the literal secret in application code.

Secret specification format: `!![appName|]service[|domain]|username`.

This feature applies to `AddStringAt`, `AppendString`, `SetStringAt`, `SetStringOf`, `UpdateSb`, and `UpdateString`.

**Security:** Secret resolution changes where the string value comes from; the resulting JSON member still contains the resolved value. Avoid emitting or logging JSON that contains credentials unless that exposure is explicitly intended.

### JsonObject.I

`Chilkat 11.7.0 · pascal · JsonObject · I · property · read/write · since 9.5.0.56`

```pascal
property I: Integer read GetI write SetI;
```

Supplies the integer substituted for `i` when a JSON path contains an array index such as `[i]`. This is useful for loop-based navigation without constructing a new path string for every iteration.

**Related properties:** The `J` and `K` properties provide the same substitution behavior for `[j]` and `[k]`.

### JsonObject.J

`Chilkat 11.7.0 · pascal · JsonObject · J · property · read/write · since 9.5.0.56`

```pascal
property J: Integer read GetJ write SetJ;
```

Supplies the integer substituted for `j` when a JSON path contains `[j]`. It is commonly used with nested-array paths such as `matrix[i][j]`.

### JsonObject.K

`Chilkat 11.7.0 · pascal · JsonObject · K · property · read/write · since 9.5.0.56`

```pascal
property K: Integer read GetK write SetK;
```

Supplies the integer substituted for `k` when a JSON path contains `[k]`. It can be combined with `I` and `J` for deeper nested-array traversal.

### JsonObject.LowerCaseNames

`Chilkat 11.7.0 · pascal · JsonObject · LowerCaseNames · property · read/write · since 9.5.0.87`

```pascal
property LowerCaseNames: Boolean read GetLowerCaseNames write SetLowerCaseNames;
```

If `True`, member names are converted to lowercase while JSON is loaded by `Load`, `LoadBd`, `LoadSb`, or `LoadFile`. The default is `False`.

**Important:** This changes member names in the parsed document; it is not merely a case-insensitive lookup mode. Use it only when normalizing names is intentional.

### JsonObject.PathPrefix

`Chilkat 11.7.0 · pascal · JsonObject · PathPrefix · property · read/write · since 9.5.0.76`

```pascal
property PathPrefix: string read GetPathPrefix write SetPathPrefix;
```

Specifies a path prefix automatically prepended to JSON paths passed to path-based methods such as `StringOf`, `ObjectOf`, `UpdateString`, `SetBoolOf`, and `SizeOfArray`. The default is the empty string.

**Use case:** Set a prefix when many operations target the same nested object. The individual method calls can then use paths relative to that prefix.

### JsonObject.Size

`Chilkat 11.7.0 · pascal · JsonObject · Size · property · read-only · since 9.5.0.56`

```pascal
property Size: Integer read GetSize;
```

Returns the number of direct name/value members in this JSON object. Nested members inside child objects are not included.

**JSON objects and order:** RFC 8259 defines a JSON object as an unordered collection of name/value pairs. Chilkat preserves a member order so index-based APIs and deterministic emission are possible, but interoperable application logic should generally use member names rather than depend on object order.

### JsonObject.Strict

`Chilkat 11.7.0 · pascal · JsonObject · Strict · property · read/write · since 11.6.0`

```pascal
property Strict: Boolean read GetStrict write SetStrict;
```

When `Strict` is **true**, the Load methods first check that the data is well-formed JSON. If it is not, the load fails and the contents of this JsonObject are left **unchanged**. The default is `False`.

This applies to `Load`, `LoadSb`, `LoadBd`, `LoadFile` and `LoadPredefined`.

Chilkat's JSON parser is deliberately tolerant. By default it can accept text that is not well-formed, succeed, and leave an empty or partially populated document. That is convenient when the goal is a best-effort parse of imperfect input, but it is the wrong behavior when a silently missing member changes what the application does. A single missing comma, for example, can cause the members after it to be dropped while the load still reports success.

Set `Strict` to `True` for JSON carrying configuration, credentials, or security parameters, where a member that quietly failed to load would be acted on as though it had never been specified.

**Note:** The default is `False` so that existing applications are unaffected. When a strict load is rejected, this JsonObject keeps whatever it held before the call, so a failed reload never leaves the object empty.

### JsonObject.UncommonOptions

`Chilkat 11.7.0 · pascal · JsonObject · UncommonOptions · property · read/write · since 9.5.0.90`

```pascal
property UncommonOptions: string read GetUncommonOptions write SetUncommonOptions;
```

Provides a catch-all string for uncommon, implementation-specific options. The default is the empty string and it should normally remain empty.

**Recommendation:** Do not invent option keywords. Set this property only when a specific `JsonObject` option is documented by Chilkat or provided by Chilkat support.

## Methods

### JsonObject.AddArrayAt

`Chilkat 11.7.0 · pascal · JsonObject · AddArrayAt · method · since 9.5.0.56`

```pascal
function  AddArrayAt(index: Integer;
    const name: string): Boolean;
```

Inserts a new JSON array member named `name` at the zero-based member position `index`. The new array is empty.

|  |  |
| --- | --- |
| `0` | Insert as the first member. |
| `-1` | Append as the last member. |
| `n` | Insert at zero-based position n. |

**Member name vs. JSON path:** `name` is a direct member name, not a JSON path. Use an `Update*` or `Set*Of` method when addressing a nested value by path.

Returns True for success, False for failure.

### JsonObject.AddArrayCopyAt

`Chilkat 11.7.0 · pascal · JsonObject · AddArrayCopyAt · method · since 9.5.0.82`

```pascal
// jarr is a TJsonArray object.

function  AddArrayCopyAt(index: Integer;
    const name: string;
    jarr: TChilkatBase): Boolean;
```

Inserts a new JSON array member named `name` at the zero-based member position `index`. The array value is copied from `jarr`; subsequent changes to the source array do not modify the inserted copy.

|  |  |
| --- | --- |
| `0` | Insert as the first member. |
| `-1` | Append as the last member. |
| `n` | Insert at zero-based position n. |

**Member name vs. JSON path:** `name` is a direct member name, not a JSON path. Use an `Update*` or `Set*Of` method when addressing a nested value by path.

Returns True for success, False for failure.

### JsonObject.AddBoolAt

`Chilkat 11.7.0 · pascal · JsonObject · AddBoolAt · method · since 9.5.0.56`

```pascal
function  AddBoolAt(index: Integer;
    const name: string;
    value: Boolean): Boolean;
```

Inserts a new JSON boolean member named `name` at the zero-based member position `index`. The value is taken from `value`.

|  |  |
| --- | --- |
| `0` | Insert as the first member. |
| `-1` | Append as the last member. |
| `n` | Insert at zero-based position n. |

**Member name vs. JSON path:** `name` is a direct member name, not a JSON path. Use an `Update*` or `Set*Of` method when addressing a nested value by path.

Returns True for success, False for failure.

### JsonObject.AddIntAt

`Chilkat 11.7.0 · pascal · JsonObject · AddIntAt · method · since 9.5.0.56`

```pascal
function  AddIntAt(index: Integer;
    const name: string;
    value: Integer): Boolean;
```

Inserts a new JSON number member named `name` at the zero-based member position `index`. The integer `value` is emitted as a JSON number, not as a quoted string.

|  |  |
| --- | --- |
| `0` | Insert as the first member. |
| `-1` | Append as the last member. |
| `n` | Insert at zero-based position n. |

**Member name vs. JSON path:** `name` is a direct member name, not a JSON path. Use an `Update*` or `Set*Of` method when addressing a nested value by path.

Returns True for success, False for failure.

### JsonObject.AddNullAt

`Chilkat 11.7.0 · pascal · JsonObject · AddNullAt · method · since 9.5.0.56`

```pascal
function  AddNullAt(index: Integer;
    const name: string): Boolean;
```

Inserts a new JSON null member named `name` at the zero-based member position `index`.

|  |  |
| --- | --- |
| `0` | Insert as the first member. |
| `-1` | Append as the last member. |
| `n` | Insert at zero-based position n. |

**Member name vs. JSON path:** `name` is a direct member name, not a JSON path. Use an `Update*` or `Set*Of` method when addressing a nested value by path.

Returns True for success, False for failure.

### JsonObject.AddNumberAt

`Chilkat 11.7.0 · pascal · JsonObject · AddNumberAt · method · since 9.5.0.56`

```pascal
function  AddNumberAt(index: Integer;
    const name: string;
    const numericStr: string): Boolean;
```

Inserts a new JSON number member named `name` at the zero-based member position `index`. The `numericStr` argument supplies the exact JSON numeric text to store.

|  |  |
| --- | --- |
| `0` | Insert as the first member. |
| `-1` | Append as the last member. |
| `n` | Insert at zero-based position n. |

**Member name vs. JSON path:** `name` is a direct member name, not a JSON path. Use an `Update*` or `Set*Of` method when addressing a nested value by path.

**Exact numeric text:** Use this method when lexical form or precision matters, for example `12345678901234567890`, `1.2500`, or scientific notation. The supplied text must be valid JSON number syntax; JSON does not permit `NaN` or infinity.

Returns True for success, False for failure.

### JsonObject.AddObjectAt

`Chilkat 11.7.0 · pascal · JsonObject · AddObjectAt · method · since 9.5.0.56`

```pascal
function  AddObjectAt(index: Integer;
    const name: string): Boolean;
```

Inserts a new JSON object member named `name` at the zero-based member position `index`. The new object is empty.

|  |  |
| --- | --- |
| `0` | Insert as the first member. |
| `-1` | Append as the last member. |
| `n` | Insert at zero-based position n. |

**Member name vs. JSON path:** `name` is a direct member name, not a JSON path. Use an `Update*` or `Set*Of` method when addressing a nested value by path.

Returns True for success, False for failure.

### JsonObject.AddObjectCopyAt

`Chilkat 11.7.0 · pascal · JsonObject · AddObjectCopyAt · method · since 9.5.0.82`

```pascal
// jsonObj is a TJsonObject object.

function  AddObjectCopyAt(index: Integer;
    const name: string;
    jsonObj: TChilkatBase): Boolean;
```

Inserts a new JSON object member named `name` at the zero-based member position `index`. The object value is copied from `jsonObj`; the inserted value is independent of the source.

|  |  |
| --- | --- |
| `0` | Insert as the first member. |
| `-1` | Append as the last member. |
| `n` | Insert at zero-based position n. |

**Member name vs. JSON path:** `name` is a direct member name, not a JSON path. Use an `Update*` or `Set*Of` method when addressing a nested value by path.

Returns True for success, False for failure.

### JsonObject.AddStringAt

`Chilkat 11.7.0 · pascal · JsonObject · AddStringAt · method · since 9.5.0.56`

```pascal
function  AddStringAt(index: Integer;
    const name: string;
    const value: string): Boolean;
```

Inserts a new JSON string member named `name` at the zero-based member position `index`. The value is stored as a JSON string and is escaped as needed when emitted.

|  |  |
| --- | --- |
| `0` | Insert as the first member. |
| `-1` | Append as the last member. |
| `n` | Insert at zero-based position n. |

**Member name vs. JSON path:** `name` is a direct member name, not a JSON path. Use an `Update*` or `Set*Of` method when addressing a nested value by path.

Returns True for success, False for failure.

### JsonObject.AppendArray

`Chilkat 11.7.0 · pascal · JsonObject · AppendArray · method · since 9.5.0.58`

```pascal
// Return value is a TJsonArray object.

function  AppendArray(const name: string): TChilkatBase;
```

Appends a new JSON array member named `name` to this object. The newly appended array is empty and the returned `JsonArray` references that array in this document, so changes made through it modify the same JSON tree.

**Member name vs. JSON path:** `name` is a direct member name. It is not interpreted as a JSON path. Use the corresponding `Update*` method when a nested path should be addressed or created.

Returns `nil` on failure

### JsonObject.AppendArray2

`Chilkat 11.7.0 · pascal · JsonObject · AppendArray2 · method · since 11.0.0`

```pascal
// jarr is a TJsonArray object.

function  AppendArray2(const name: string;
    jarr: TChilkatBase): Boolean;
```

Appends a new JSON array member named `name` to this object. A new empty array is created and `jarr` is updated to reference it. The method returns `True` on success.

**Member name vs. JSON path:** `name` is a direct member name. It is not interpreted as a JSON path. Use the corresponding `Update*` method when a nested path should be addressed or created.

Returns True for success, False for failure.

### JsonObject.AppendArrayCopy

`Chilkat 11.7.0 · pascal · JsonObject · AppendArrayCopy · method · since 9.5.0.82`

```pascal
// jarr is a TJsonArray object.

function  AppendArrayCopy(const name: string;
    jarr: TChilkatBase): Boolean;
```

Appends a new JSON array member named `name` to this object. The array is copied from `jarr`, so the appended array is independent of the source array.

**Member name vs. JSON path:** `name` is a direct member name. It is not interpreted as a JSON path. Use the corresponding `Update*` method when a nested path should be addressed or created.

Returns True for success, False for failure.

### JsonObject.AppendBool

`Chilkat 11.7.0 · pascal · JsonObject · AppendBool · method · since 9.5.0.58`

```pascal
function  AppendBool(const name: string;
    value: Boolean): Boolean;
```

Appends a new JSON boolean member named `name` to this object. The value is taken from `value`.

**Member name vs. JSON path:** `name` is a direct member name. It is not interpreted as a JSON path. Use the corresponding `Update*` method when a nested path should be addressed or created.

Returns True for success, False for failure.

### JsonObject.AppendInt

`Chilkat 11.7.0 · pascal · JsonObject · AppendInt · method · since 9.5.0.58`

```pascal
function  AppendInt(const name: string;
    value: Integer): Boolean;
```

Appends a new JSON number member named `name` to this object. The integer value is stored as a JSON number.

**Member name vs. JSON path:** `name` is a direct member name. It is not interpreted as a JSON path. Use the corresponding `Update*` method when a nested path should be addressed or created.

Returns True for success, False for failure.

### JsonObject.AppendObject

`Chilkat 11.7.0 · pascal · JsonObject · AppendObject · method · since 9.5.0.58`

```pascal
// Return value is a TJsonObject object.

function  AppendObject(const name: string): TChilkatBase;
```

Appends a new JSON object member named `name` to this object. The newly appended object is empty and the returned `JsonObject` references that object in this document.

**Member name vs. JSON path:** `name` is a direct member name. It is not interpreted as a JSON path. Use the corresponding `Update*` method when a nested path should be addressed or created.

Returns `nil` on failure

### JsonObject.AppendObject2

`Chilkat 11.7.0 · pascal · JsonObject · AppendObject2 · method · since 11.0.0`

```pascal
// jsonObj is a TJsonObject object.

function  AppendObject2(const name: string;
    jsonObj: TChilkatBase): Boolean;
```

Appends a new JSON object member named `name` to this object. A new empty object is created and `jsonObj` is updated to reference it. The method returns `True` on success.

**Member name vs. JSON path:** `name` is a direct member name. It is not interpreted as a JSON path. Use the corresponding `Update*` method when a nested path should be addressed or created.

Returns True for success, False for failure.

### JsonObject.AppendObjectCopy

`Chilkat 11.7.0 · pascal · JsonObject · AppendObjectCopy · method · since 9.5.0.82`

```pascal
// jsonObj is a TJsonObject object.

function  AppendObjectCopy(const name: string;
    jsonObj: TChilkatBase): Boolean;
```

Appends a new JSON object member named `name` to this object. The object is copied from `jsonObj`, so the appended object is independent of the source object.

**Member name vs. JSON path:** `name` is a direct member name. It is not interpreted as a JSON path. Use the corresponding `Update*` method when a nested path should be addressed or created.

Returns True for success, False for failure.

### JsonObject.AppendString

`Chilkat 11.7.0 · pascal · JsonObject · AppendString · method · since 9.5.0.58`

```pascal
function  AppendString(const name: string;
    const value: string): Boolean;
```

Appends a new JSON string member named `name` to this object. The value is JSON-escaped as needed when emitted.

**Member name vs. JSON path:** `name` is a direct member name. It is not interpreted as a JSON path. Use the corresponding `Update*` method when a nested path should be addressed or created.

Returns True for success, False for failure.

### JsonObject.AppendStringArray

`Chilkat 11.7.0 · pascal · JsonObject · AppendStringArray · method · since 9.5.0.67`

```pascal
// values is a TStringTable object.

function  AppendStringArray(const name: string;
    values: TChilkatBase): Boolean;
```

Appends a new JSON array member named `name` to this object. The array is populated with the strings contained in `values`.

**Member name vs. JSON path:** `name` is a direct member name. It is not interpreted as a JSON path. Use the corresponding `Update*` method when a nested path should be addressed or created.

Returns True for success, False for failure.

### JsonObject.ArrayAt

`Chilkat 11.7.0 · pascal · JsonObject · ArrayAt · method · since 9.5.0.56`

```pascal
// Return value is a TJsonArray object.

function  ArrayAt(index: Integer): TChilkatBase;
```

Returns the JSON array stored in the member at zero-based position `index`. The returned `JsonArray` references the existing array in the same document; it is not a detached copy.

**Type requirement:** The member at `index` must be an array. Use `TypeAt` when the member type is not already known.

Returns `nil` on failure

### JsonObject.ArrayAt2

`Chilkat 11.7.0 · pascal · JsonObject · ArrayAt2 · method · since 11.0.0`

```pascal
// jarr is a TJsonArray object.

function  ArrayAt2(index: Integer;
    jarr: TChilkatBase): Boolean;
```

Updates `jarr` to reference the JSON array stored at zero-based member position `index` and returns `True` on success.

Returns True for success, False for failure.

### JsonObject.ArrayOf

`Chilkat 11.7.0 · pascal · JsonObject · ArrayOf · method · since 9.5.0.56`

```pascal
// Return value is a TJsonArray object.

function  ArrayOf(const jsonPath: string): TChilkatBase;
```

Returns the JSON array at `jsonPath`. The returned `JsonArray` references the existing array in the same document, so modifications through it are reflected in the parent JSON.

**JSON paths:** Paths are relative to this object and may include object-member separators and array indexes, for example `orders[0].items`.

Returns `nil` on failure

### JsonObject.ArrayOf2

`Chilkat 11.7.0 · pascal · JsonObject · ArrayOf2 · method · since 11.1.0`

```pascal
// jarr is a TJsonArray object.

function  ArrayOf2(const jsonPath: string;
    jarr: TChilkatBase): Boolean;
```

Updates `jarr` to reference the JSON array at `jsonPath` and returns `True` on success.

Returns True for success, False for failure.

### JsonObject.BoolAt

`Chilkat 11.7.0 · pascal · JsonObject · BoolAt · method · since 9.5.0.56`

```pascal
function  BoolAt(index: Integer): Boolean;
```

Returns the boolean value of the member at zero-based position `index`.

**Indexing:** Member indexes are based on the order maintained by this `JsonObject` instance. JSON objects are semantically unordered, so application protocols should normally identify values by member name rather than by position.

### JsonObject.BoolOf

`Chilkat 11.7.0 · pascal · JsonObject · BoolOf · method · since 9.5.0.56`

```pascal
function  BoolOf(const jsonPath: string): Boolean;
```

Returns the boolean value at `jsonPath`. The path is evaluated relative to this `JsonObject`, after applying `PathPrefix` if one is set.

### JsonObject.BytesOf

`Chilkat 11.7.0 · pascal · JsonObject · BytesOf · method · since 9.5.0.68`

```pascal
// bd is a TBinData object.

function  BytesOf(const jsonPath: string;
    const encoding: string;
    bd: TChilkatBase): Boolean;
```

Reads the string value at `jsonPath`, decodes it using `encoding` (for example, `base64` or `hex`), and appends the resulting bytes to `bd`.

**Binary-in-JSON convention:** The JSON member itself is text. The `encoding` argument tells Chilkat how that text represents the original bytes.

Returns True for success, False for failure.

### JsonObject.Clear

`Chilkat 11.7.0 · pascal · JsonObject · Clear · method · since 9.5.0.76`

```pascal
procedure Clear;
```

Removes all members from this JSON object, leaving an empty object equivalent to `{}`.

### JsonObject.CopyRef

`Chilkat 11.7.0 · pascal · JsonObject · CopyRef · method · since 11.0.0`

```pascal
// jsonObj is a TJsonObject object.

function  CopyRef(jsonObj: TChilkatBase): Boolean;
```

Updates `jsonObj` so that it references the same JSON object as the caller. No JSON data is copied.

**Shared state:** After this call, modifications through either reference affect the same underlying JSON object.

Returns True for success, False for failure.

### JsonObject.DateOf

`Chilkat 11.7.0 · pascal · JsonObject · DateOf · method · since 9.5.0.73`

```pascal
// dt is a TCkDateTime object.

function  DateOf(const jsonPath: string;
    dt: TChilkatBase): Boolean;
```

Parses the date/time value at `jsonPath` and loads the result into `dt`. Recognized forms include ISO 8601 timestamps (for example, `2009-11-04T19:55:41Z`), RFC 822-style date/time strings, and Unix timestamp integers.

**JSON has no native date type:** Dates in JSON are application conventions, usually represented as strings or numbers. This method recognizes common conventions and converts them to `CkDateTime`.

Returns True for success, False for failure.

### JsonObject.Delete

`Chilkat 11.7.0 · pascal · JsonObject · Delete · method · since 9.5.0.56`

```pascal
function  Delete(const name: string): Boolean;
```

Deletes the direct member named `name` from this JSON object.

**Not a path:** `name` is a member name, not a JSON path. Use a path-based operation when deleting or replacing a nested value requires navigation first.

Returns True for success, False for failure.

### JsonObject.DeleteAt

`Chilkat 11.7.0 · pascal · JsonObject · DeleteAt · method · since 9.5.0.56`

```pascal
function  DeleteAt(index: Integer): Boolean;
```

Deletes the member at zero-based position `index`. Members after the deleted position shift toward the beginning.

Returns True for success, False for failure.

### JsonObject.DeleteRecords

`Chilkat 11.7.0 · pascal · JsonObject · DeleteRecords · method · since 9.5.0.88`

```pascal
function  DeleteRecords(const arrayPath: string;
    const relpath: string;
    const value: string;
    caseSensitive: Boolean): Integer;
```

Deletes every object record in the array at `arrayPath` whose value at relative path `relpath` equals or wildcard-matches `value`. The `caseSensitive` argument controls matching. Returns the number of records deleted.

### JsonObject.DtOf

`Chilkat 11.7.0 · pascal · JsonObject · DtOf · method · since 9.5.0.73`

```pascal
// dt is a TDtObj object.

function  DtOf(const jsonPath: string;
    bLocal: Boolean;
    dt: TChilkatBase): Boolean;
```

Parses the date/time value at `jsonPath` into `dt`. If `bLocal` is `True`, the destination receives local date/time fields; otherwise it receives UTC/GMT fields. Recognized inputs include ISO 8601 timestamps, RFC 822-style date/time strings, and Unix timestamp integers.

Returns True for success, False for failure.

### JsonObject.Emit

`Chilkat 11.7.0 · pascal · JsonObject · Emit · method · since 9.5.0.56`

```pascal
function  Emit: string;
```

Serializes the JSON document rooted at this object and returns the JSON text. Formatting is controlled by `EmitCompact` and, for pretty output, `EmitCrLf`.

**Object member order:** Chilkat emits members in its maintained order, but JSON object ordering is not semantically significant under RFC 8259.

Returns True for success, False for failure.

### JsonObject.EmitBd

`Chilkat 11.7.0 · pascal · JsonObject · EmitBd · method · since 9.5.0.77`

```pascal
// bd is a TBinData object.

function  EmitBd(bd: TChilkatBase): Boolean;
```

Serializes this JSON and appends the resulting bytes to `bd`.

**Append behavior:** Existing data in the destination `BinData` is preserved.

Returns True for success, False for failure.

### JsonObject.EmitSb

`Chilkat 11.7.0 · pascal · JsonObject · EmitSb · method · since 9.5.0.62`

```pascal
// sb is a TStringBuilder object.

function  EmitSb(sb: TChilkatBase): Boolean;
```

Serializes this JSON and appends the resulting text to `sb`. Formatting follows `EmitCompact` and `EmitCrLf`.

**Append behavior:** Existing text in the destination `StringBuilder` is preserved; the emitted JSON is added after it.

Returns True for success, False for failure.

### JsonObject.EmitWithSubs

`Chilkat 11.7.0 · pascal · JsonObject · EmitWithSubs · method · since 9.5.0.67`

```pascal
// subs is a THashtable object.

function  EmitWithSubs(subs: TChilkatBase;
    omitEmpty: Boolean): string;
```

Serializes the JSON after substituting variables from `subs` into template strings. A placeholder such as `{$name}` is replaced by the corresponding hashtable value. Prefixing the variable name with `i.`, as in `{$i.count}`, emits the substituted value as a JSON integer instead of a quoted string.

If `omitEmpty` is `True`, members whose substituted result is an empty string or empty array are omitted from the emitted JSON.

**Template reuse:** This method does not require rebuilding the JSON template. It is commonly paired with `Predefine` and `LoadPredefined` when the same JSON shape is emitted repeatedly with different values.

Returns True for success, False for failure.

### JsonObject.FindObjectWithMember

`Chilkat 11.7.0 · pascal · JsonObject · FindObjectWithMember · method · since 9.5.0.67`

```pascal
// Return value is a TJsonObject object.

function  FindObjectWithMember(const name: string): TChilkatBase;
```

Recursively searches this JSON subtree for the first JSON object containing a direct member named `name`. Returns that object, or `nil` if no matching object is found.

Returns `nil` on failure

### JsonObject.FindObjectWithMember2

`Chilkat 11.7.0 · pascal · JsonObject · FindObjectWithMember2 · method · since 11.0.0`

```pascal
// jsonObj is a TJsonObject object.

function  FindObjectWithMember2(const name: string;
    jsonObj: TChilkatBase): Boolean;
```

Recursively searches this JSON subtree for the first object containing a direct member named `name`. On success, `jsonObj` is updated to reference the matching object and the method returns `True`.

Returns True for success, False for failure.

### JsonObject.FindRecord

`Chilkat 11.7.0 · pascal · JsonObject · FindRecord · method · since 9.5.0.63`

```pascal
// Return value is a TJsonObject object.

function  FindRecord(const arrayPath: string;
    const relPath: string;
    const value: string;
    caseSensitive: Boolean): TChilkatBase;
```

Searches the JSON array at `arrayPath` for the first object whose value at relative path `relPath` equals or wildcard-matches `value`. The `caseSensitive` argument controls string comparison. Returns the matching record object.

**Wildcard matching:** The search value may contain `*` to match zero or more characters. `relPath` is evaluated relative to each record object in the array.

Returns `nil` on failure

### JsonObject.FindRecord2

`Chilkat 11.7.0 · pascal · JsonObject · FindRecord2 · method · since 11.0.0`

```pascal
// jsonObj is a TJsonObject object.

function  FindRecord2(const arrayPath: string;
    const relPath: string;
    const value: string;
    caseSensitive: Boolean;
    jsonObj: TChilkatBase): Boolean;
```

Searches the JSON array at `arrayPath` using the same matching rules as `FindRecord`. On success, `jsonObj` is updated to reference the first matching record and the method returns `True`.

**Reference semantics:** The destination references the record in the original JSON document; changes made through `jsonObj` modify that record.

Returns True for success, False for failure.

### JsonObject.FindRecordString

`Chilkat 11.7.0 · pascal · JsonObject · FindRecordString · method · since 9.5.0.63`

```pascal
function  FindRecordString(const arrayPath: string;
    const relPath: string;
    const value: string;
    caseSensitive: Boolean;
    const retRelPath: string): string;
```

Searches the JSON array at `arrayPath` for the first record whose `relPath` value equals or wildcard-matches `value`, then returns the value at `retRelPath` from that same record as a string.

**Typical use:** This is useful for lookups such as “find the record where `Name` is `Advertising` and return its `Id`.” The `*` wildcard may be used in `value`.

Returns True for success, False for failure.

### JsonObject.FirebaseApplyEvent

`Chilkat 11.7.0 · pascal · JsonObject · FirebaseApplyEvent · method · since 9.5.0.58`

```pascal
function  FirebaseApplyEvent(const name: string;
    const data: string): Boolean;
```

Applies a Firebase Realtime Database event to this JSON object. `name` should be `put` or `patch`, and `data` should contain event JSON such as `{"path":"/","data":{"a":1,"b":2}}`.

**Purpose:** This method is useful when maintaining a local JSON representation from Firebase server-sent events: `put` replaces the value at a path, while `patch` updates individual child keys.

Returns True for success, False for failure.

### JsonObject.FirebasePatch

`Chilkat 11.7.0 · pascal · JsonObject · FirebasePatch · method · since 9.5.0.58`

```pascal
function  FirebasePatch(const jsonPath: string;
    const jsonData: string): Boolean;
```

Applies Firebase-style patch semantics at `jsonPath`. `jsonData` must contain a JSON object; each key in that object updates or adds the corresponding key at the target path.

**Relative path:** `jsonPath` is relative to this `JsonObject`.

Returns True for success, False for failure.

### JsonObject.FirebasePut

`Chilkat 11.7.0 · pascal · JsonObject · FirebasePut · method · since 9.5.0.58`

```pascal
function  FirebasePut(const jsonPath: string;
    const value: string): Boolean;
```

Applies Firebase-style put semantics at `jsonPath`, replacing or inserting the value at that path. `value` is JSON text and may represent an object, array, number, boolean, `null`, or a quoted JSON string.

**Quoted strings:** To store a string through this method, `value` must contain a valid JSON string literal, including its surrounding double quotes. Use `UpdateString` when you already have an ordinary application string.

Returns True for success, False for failure.

### JsonObject.GetDocRoot

`Chilkat 11.7.0 · pascal · JsonObject · GetDocRoot · method · since 9.5.0.56`

```pascal
// Return value is a TJsonObject object.

function  GetDocRoot: TChilkatBase;
```

Returns a `JsonObject` reference to the root object of the JSON document containing this object. This can be called from any nested object reference.

**Shared document lifetime:** Nested `JsonObject` references share the same underlying JSON document. The document remains available while at least one such reference is retained by the application.

Returns `nil` on failure

### JsonObject.GetDocRoot2

`Chilkat 11.7.0 · pascal · JsonObject · GetDocRoot2 · method · since 11.0.0`

```pascal
// docRoot is a TJsonObject object.

function  GetDocRoot2(docRoot: TChilkatBase): Boolean;
```

Updates `docRoot` to reference the root object of the JSON document containing the caller and returns `True` on success.

**Reference semantics:** The destination is another reference into the same underlying document; it is not a copy.

Returns True for success, False for failure.

### JsonObject.HasMember

`Chilkat 11.7.0 · pascal · JsonObject · HasMember · method · since 9.5.0.58`

```pascal
function  HasMember(const jsonPath: string): Boolean;
```

Returns `True` if a value exists at `jsonPath`; otherwise returns `False`.

**Missing vs. null:** A member whose JSON value is `null` still exists. Use `IsNullOf` to test specifically for JSON `null`.

Returns True for success, False for failure.

### JsonObject.IndexOf

`Chilkat 11.7.0 · pascal · JsonObject · IndexOf · method · since 9.5.0.56`

```pascal
function  IndexOf(const name: string): Integer;
```

Returns the zero-based position of the direct member named `name`, or `-1` if that member name is not found.

**Not a path:** `name` is searched only among the direct members of this object.

### JsonObject.IntAt

`Chilkat 11.7.0 · pascal · JsonObject · IntAt · method · since 9.5.0.56`

```pascal
function  IntAt(index: Integer): Integer;
```

Returns the integer value of the member at zero-based position `index`.

**Indexing:** Member indexes are based on the order maintained by this `JsonObject` instance. JSON objects are semantically unordered, so application protocols should normally identify values by member name rather than by position.

### JsonObject.IntOf

`Chilkat 11.7.0 · pascal · JsonObject · IntOf · method · since 9.5.0.56`

```pascal
function  IntOf(const jsonPath: string): Integer;
```

Returns the integer value at `jsonPath`. The path is evaluated relative to this `JsonObject`, after applying `PathPrefix` if one is set.

**Large numbers:** Use `StringOf` or the exact numeric-text APIs when a JSON integer may exceed the range of the language binding's integer type.

### JsonObject.IsNullAt

`Chilkat 11.7.0 · pascal · JsonObject · IsNullAt · method · since 9.5.0.56`

```pascal
function  IsNullAt(index: Integer): Boolean;
```

Returns `True` if the member at zero-based position `index` has the JSON value `null`; otherwise returns `False`.

### JsonObject.IsNullOf

`Chilkat 11.7.0 · pascal · JsonObject · IsNullOf · method · since 9.5.0.56`

```pascal
function  IsNullOf(const jsonPath: string): Boolean;
```

Returns `True` if the value at `jsonPath` is the JSON literal `null`; otherwise returns `False`.

**Null is a value:** JSON `null` is different from a missing member and from an empty string. Use `HasMember` when existence must be tested separately.

### JsonObject.JsonTypeOf

`Chilkat 11.7.0 · pascal · JsonObject · JsonTypeOf · method · since 9.5.0.68`

```pascal
function  JsonTypeOf(const jsonPath: string): Integer;
```

Returns an integer identifying the JSON type of the value at `jsonPath`. Returns `-1` if no member exists at that path.

|  |  |
| --- | --- |
| `1` | string |
| `2` | number |
| `3` | object |
| `4` | array |
| `5` | boolean |
| `6` | null |

### JsonObject.Load

`Chilkat 11.7.0 · pascal · JsonObject · Load · method · since 9.5.0.56`

```pascal
function  Load(const json: string): Boolean;
```

Parses the JSON text in `json` and loads the parsed data into this object for DOM-style access and modification.

**JSON data model:** JSON values are strings, numbers, booleans, `null`, objects, or arrays. Object member names should be unique for interoperable JSON; RFC 8259 notes that consumers differ in how duplicate names are handled.

Returns True for success, False for failure.

### JsonObject.LoadBd

`Chilkat 11.7.0 · pascal · JsonObject · LoadBd · method · since 9.5.0.77`

```pascal
// bd is a TBinData object.

function  LoadBd(bd: TChilkatBase): Boolean;
```

Parses JSON from the bytes contained in `bd` and loads it into this object.

Returns True for success, False for failure.

### JsonObject.LoadFile

`Chilkat 11.7.0 · pascal · JsonObject · LoadFile · method · since 9.5.0.56`

```pascal
function  LoadFile(const path: string): Boolean;
```

Reads JSON text from the file at `path`, parses it, and loads the result into this object.

Returns True for success, False for failure.

### JsonObject.LoadPredefined

`Chilkat 11.7.0 · pascal · JsonObject · LoadPredefined · method · since 9.5.0.67`

```pascal
function  LoadPredefined(const name: string): Boolean;
```

Loads this object from the predefined JSON document identified by `name`. Predefined documents are created with `Predefine`.

Returns True for success, False for failure.

### JsonObject.LoadSb

`Chilkat 11.7.0 · pascal · JsonObject · LoadSb · method · since 9.5.0.62`

```pascal
// sb is a TStringBuilder object.

function  LoadSb(sb: TChilkatBase): Boolean;
```

Parses JSON from the current contents of `sb` and loads it into this object.

Returns True for success, False for failure.

### JsonObject.MakeCopy

`Chilkat 11.7.0 · pascal · JsonObject · MakeCopy · method · since 11.0.0`

```pascal
// json is a TJsonObject object.

function  MakeCopy(json: TChilkatBase): Boolean;
```

Copies this JSON object into `json`. The destination receives an independent JSON copy rather than another reference to the same underlying object.

**Copy vs. reference:** Use `CopyRef` when two `JsonObject` instances should refer to the same JSON object instead of duplicating its data.

Returns True for success, False for failure.

### JsonObject.MoveMember

`Chilkat 11.7.0 · pascal · JsonObject · MoveMember · method · since 9.5.0.80`

```pascal
function  MoveMember(fromIndex: Integer;
    toIndex: Integer): Boolean;
```

Moves the direct member at zero-based position `fromIndex` to `toIndex`. Use `toIndex = 0` to move it first or `-1` to move it last.

Returns True for success, False for failure.

### JsonObject.NameAt

`Chilkat 11.7.0 · pascal · JsonObject · NameAt · method · since 9.5.0.56`

```pascal
function  NameAt(index: Integer): string;
```

Returns the name of the member at zero-based position `index`. Use this with `Size` and `TypeAt` to iterate through an object's direct members.

Returns True for success, False for failure.

### JsonObject.NewArrayOf

`Chilkat 11.7.0 · pascal · JsonObject · NewArrayOf · method · since 11.4.0`

```pascal
function  NewArrayOf(const path: string;
    const jArr: string): Boolean;
```

Creates a JSON array at `path` and loads that array from the JSON text in `jArr`. The supplied text should represent a JSON array.

**Difference from UpdateNewArray:** `UpdateNewArray` creates an empty array. `NewArrayOf` creates the array and immediately populates it from JSON text.

Returns True for success, False for failure.

### JsonObject.NewObjectOf

`Chilkat 11.7.0 · pascal · JsonObject · NewObjectOf · method · since 11.4.0`

```pascal
function  NewObjectOf(const path: string;
    const jObj: string): Boolean;
```

Creates a JSON object at `path` and loads that object from the JSON text in `jObj`. The supplied text should represent a JSON object.

**Difference from UpdateNewObject:** `UpdateNewObject` creates an empty object. `NewObjectOf` creates the object and immediately populates it from JSON text.

Returns True for success, False for failure.

### JsonObject.ObjectAt

`Chilkat 11.7.0 · pascal · JsonObject · ObjectAt · method · since 9.5.0.56`

```pascal
// Return value is a TJsonObject object.

function  ObjectAt(index: Integer): TChilkatBase;
```

Returns the JSON object stored in the member at zero-based position `index`. The returned `JsonObject` references the existing child object in the same document; changes made through it modify that document.

**Type requirement:** The member at `index` must be a JSON object. Use `TypeAt` when the type is not already known.

Returns `nil` on failure

### JsonObject.ObjectAt2

`Chilkat 11.7.0 · pascal · JsonObject · ObjectAt2 · method · since 11.0.0`

```pascal
// jsonObj is a TJsonObject object.

function  ObjectAt2(index: Integer;
    jsonObj: TChilkatBase): Boolean;
```

Updates `jsonObj` to reference the JSON object stored at zero-based member position `index` and returns `True` on success.

Returns True for success, False for failure.

### JsonObject.ObjectOf

`Chilkat 11.7.0 · pascal · JsonObject · ObjectOf · method · since 9.5.0.56`

```pascal
// Return value is a TJsonObject object.

function  ObjectOf(const jsonPath: string): TChilkatBase;
```

Returns the JSON object at `jsonPath`. The returned object is a live reference into the same JSON document, not a copy.

**Relative paths:** A path is evaluated relative to the current object. Use `GetDocRoot` when access must start from the document root.

Returns `nil` on failure

### JsonObject.ObjectOf2

`Chilkat 11.7.0 · pascal · JsonObject · ObjectOf2 · method · since 11.0.0`

```pascal
// jsonObj is a TJsonObject object.

function  ObjectOf2(const jsonPath: string;
    jsonObj: TChilkatBase): Boolean;
```

Updates `jsonObj` to reference the JSON object at `jsonPath` and returns `True` on success.

Returns True for success, False for failure.

### JsonObject.Predefine

`Chilkat 11.7.0 · pascal · JsonObject · Predefine · method · since 9.5.0.67`

```pascal
function  Predefine(const name: string): Boolean;
```

Stores this JSON document in Chilkat's internal global collection of predefined JSON documents under `name`. If the name already exists, the predefined value is replaced.

**Template use:** After predefining a document, another `JsonObject` can load it by name with `LoadPredefined`.

Returns True for success, False for failure.

### JsonObject.Rename

`Chilkat 11.7.0 · pascal · JsonObject · Rename · method · since 9.5.0.56`

```pascal
function  Rename(const oldName: string;
    const newName: string): Boolean;
```

Renames the direct member `oldName` to `newName`. The member value and its position are otherwise unchanged.

**JSON interoperability:** JSON object member names should be unique. Avoid renaming a member to a name already used by another member unless duplicate names are intentionally required.

Returns True for success, False for failure.

### JsonObject.RenameAt

`Chilkat 11.7.0 · pascal · JsonObject · RenameAt · method · since 9.5.0.56`

```pascal
function  RenameAt(index: Integer;
    const name: string): Boolean;
```

Renames the member at zero-based position `index` to `name`. The member value is not changed.

Returns True for success, False for failure.

### JsonObject.SetBoolAt

`Chilkat 11.7.0 · pascal · JsonObject · SetBoolAt · method · since 9.5.0.56`

```pascal
function  SetBoolAt(index: Integer;
    value: Boolean): Boolean;
```

Sets the member at zero-based position `index` to a JSON boolean value.

Returns True for success, False for failure.

### JsonObject.SetBoolOf

`Chilkat 11.7.0 · pascal · JsonObject · SetBoolOf · method · since 9.5.0.56`

```pascal
function  SetBoolOf(const jsonPath: string;
    value: Boolean): Boolean;
```

Sets the value at `jsonPath` to a JSON boolean value.

**Set vs. Update:** Use `UpdateBool` when missing objects or array positions along the path should be created automatically.

Returns True for success, False for failure.

### JsonObject.SetIntAt

`Chilkat 11.7.0 · pascal · JsonObject · SetIntAt · method · since 9.5.0.56`

```pascal
function  SetIntAt(index: Integer;
    value: Integer): Boolean;
```

Sets the member at zero-based position `index` to a JSON number value. The integer is emitted as a JSON number.

Returns True for success, False for failure.

### JsonObject.SetIntOf

`Chilkat 11.7.0 · pascal · JsonObject · SetIntOf · method · since 9.5.0.56`

```pascal
function  SetIntOf(const jsonPath: string;
    value: Integer): Boolean;
```

Sets the value at `jsonPath` to an integer JSON number.

**Set vs. Update:** Use `UpdateInt` when missing objects or array positions along the path should be created automatically.

Returns True for success, False for failure.

### JsonObject.SetNullAt

`Chilkat 11.7.0 · pascal · JsonObject · SetNullAt · method · since 9.5.0.56`

```pascal
function  SetNullAt(index: Integer): Boolean;
```

Sets the member at zero-based position `index` to a JSON null value.

Returns True for success, False for failure.

### JsonObject.SetNullOf

`Chilkat 11.7.0 · pascal · JsonObject · SetNullOf · method · since 9.5.0.56`

```pascal
function  SetNullOf(const jsonPath: string): Boolean;
```

Sets the value at `jsonPath` to a JSON null value.

**Set vs. Update:** Use `UpdateNull` when missing objects or array positions along the path should be created automatically.

Returns True for success, False for failure.

### JsonObject.SetNumberAt

`Chilkat 11.7.0 · pascal · JsonObject · SetNumberAt · method · since 9.5.0.56`

```pascal
function  SetNumberAt(index: Integer;
    const value: string): Boolean;
```

Sets the member at zero-based position `index` to a JSON number value. The `value` argument is the exact textual representation of the JSON number.

**JSON number syntax:** The text may contain an integer, fraction, or exponent. It must be valid JSON number syntax; leading zeros (except for zero itself), `NaN`, and infinity are not valid JSON numbers.

Returns True for success, False for failure.

### JsonObject.SetNumberOf

`Chilkat 11.7.0 · pascal · JsonObject · SetNumberOf · method · since 9.5.0.56`

```pascal
function  SetNumberOf(const jsonPath: string;
    const value: string): Boolean;
```

Sets the value at `jsonPath` to a JSON number value. The `value` argument supplies the exact textual form of the JSON number.

**Set vs. Update:** Use `UpdateNumber` when missing objects or array positions along the path should be created automatically.

**Precision:** Using numeric text avoids an intermediate conversion through a floating-point type and can therefore preserve large integers or application-specific decimal formatting.

Returns True for success, False for failure.

### JsonObject.SetStringAt

`Chilkat 11.7.0 · pascal · JsonObject · SetStringAt · method · since 9.5.0.56`

```pascal
function  SetStringAt(index: Integer;
    const value: string): Boolean;
```

Sets the member at zero-based position `index` to a JSON string value. The string is escaped as required when JSON is emitted.

Returns True for success, False for failure.

### JsonObject.SetStringOf

`Chilkat 11.7.0 · pascal · JsonObject · SetStringOf · method · since 9.5.0.56`

```pascal
function  SetStringOf(const jsonPath: string;
    const value: string): Boolean;
```

Sets the value at `jsonPath` to a JSON string value. The string is escaped as required when JSON is emitted.

**Set vs. Update:** Use `UpdateString` when missing objects or array positions along the path should be created automatically.

Returns True for success, False for failure.

### JsonObject.SizeOfArray

`Chilkat 11.7.0 · pascal · JsonObject · SizeOfArray · method · since 9.5.0.56`

```pascal
function  SizeOfArray(const jsonPath: string): Integer;
```

Returns the number of elements in the JSON array at `jsonPath`. Returns `-1` if the path does not resolve to an existing JSON array.

### JsonObject.Sort

`Chilkat 11.7.0 · pascal · JsonObject · Sort · method · since 9.5.0.100`

```pascal
procedure Sort(ascending: Boolean;
    caseSensitive: Boolean);
```

Sorts this object's direct members by member name. `ascending` selects ascending or descending order, and `caseSensitive` controls how names are compared.

**JSON semantics:** Member ordering is not significant to JSON consumers, but sorting can make emitted JSON deterministic and easier to compare or review.

### JsonObject.StringAt

`Chilkat 11.7.0 · pascal · JsonObject · StringAt · method · since 9.5.0.56`

```pascal
function  StringAt(index: Integer): string;
```

Returns the string value of the member at zero-based position `index`.

**Indexing:** Member indexes are based on the order maintained by this `JsonObject` instance. JSON objects are semantically unordered, so application protocols should normally identify values by member name rather than by position.

**Non-string values:** `StringOf` can also provide textual representations of scalar JSON values such as numbers, booleans, and `null`; use the type-specific methods when the JSON type itself matters.

Returns True for success, False for failure.

### JsonObject.StringOf

`Chilkat 11.7.0 · pascal · JsonObject · StringOf · method · since 9.5.0.56`

```pascal
function  StringOf(const jsonPath: string): string;
```

Returns the value at `jsonPath` as text. For a JSON string, the string value is returned. Scalar non-string values such as numbers, booleans, and `null` are returned using their JSON textual representation.

**Type-sensitive code:** Use `JsonTypeOf`, `IntOf`, `BoolOf`, or `IsNullOf` when the distinction between JSON types is important.

Returns True for success, False for failure.

### JsonObject.StringOfEquals

`Chilkat 11.7.0 · pascal · JsonObject · StringOfEquals · method · since 9.5.0.96`

```pascal
function  StringOfEquals(const jsonPath: string;
    const value: string;
    caseSensitive: Boolean): Boolean;
```

Returns `True` if the textual value at `jsonPath` equals `value` according to the `caseSensitive` setting; otherwise returns `False`.

### JsonObject.StringOfSb

`Chilkat 11.7.0 · pascal · JsonObject · StringOfSb · method · since 9.5.0.68`

```pascal
// sb is a TStringBuilder object.

function  StringOfSb(const jsonPath: string;
    sb: TChilkatBase): Boolean;
```

Retrieves the value at `jsonPath` as text and appends it to `sb`.

**Append behavior:** Existing contents of the destination `StringBuilder` are preserved.

Returns True for success, False for failure.

### JsonObject.Swap

`Chilkat 11.7.0 · pascal · JsonObject · Swap · method · since 9.5.0.76`

```pascal
function  Swap(index1: Integer;
    index2: Integer): Boolean;
```

Swaps the positions of the direct members at zero-based indexes `index1` and `index2`. Member names and values are unchanged.

**Ordering:** JSON object order is not semantically significant, but Chilkat preserves an order for index-based access and emission.

Returns True for success, False for failure.

### JsonObject.TypeAt

`Chilkat 11.7.0 · pascal · JsonObject · TypeAt · method · since 9.5.0.58`

```pascal
function  TypeAt(index: Integer): Integer;
```

Returns an integer identifying the JSON type of the member at zero-based position `index`. Returns `-1` if no member exists at that index.

|  |  |
| --- | --- |
| `1` | string |
| `2` | number |
| `3` | object |
| `4` | array |
| `5` | boolean |
| `6` | null |

### JsonObject.UIntOf

`Chilkat 11.7.0 · pascal · JsonObject · UIntOf · method · since 9.5.0.96`

```pascal
function  UIntOf(const jsonPath: string): LongWord;
```

Returns the unsigned integer value at `jsonPath`.

### JsonObject.UpdateBd

`Chilkat 11.7.0 · pascal · JsonObject · UpdateBd · method · since 9.5.0.68`

```pascal
// bd is a TBinData object.

function  UpdateBd(const jsonPath: string;
    const encoding: string;
    bd: TChilkatBase): Boolean;
```

Updates the value at `jsonPath` to a JSON string value, or creates the member and any missing path components as needed. The bytes in `bd` are first encoded according to `encoding` (for example, `base64` or `hex`) and the encoded text is stored as the JSON string value.

**Path-based operation:** `jsonPath` is interpreted using `DelimiterChar`, `PathPrefix`, and the `I`/`J`/`K` index substitutions.

**Binary data in JSON:** JSON has no native byte-array type. Binary content must therefore be represented using a textual encoding agreed upon by the producer and consumer.

Returns True for success, False for failure.

### JsonObject.UpdateBool

`Chilkat 11.7.0 · pascal · JsonObject · UpdateBool · method · since 9.5.0.63`

```pascal
function  UpdateBool(const jsonPath: string;
    value: Boolean): Boolean;
```

Updates the value at `jsonPath` to a JSON boolean value, or creates the member and any missing path components as needed.

**Path-based operation:** `jsonPath` is interpreted using `DelimiterChar`, `PathPrefix`, and the `I`/`J`/`K` index substitutions.

Returns True for success, False for failure.

### JsonObject.UpdateInt

`Chilkat 11.7.0 · pascal · JsonObject · UpdateInt · method · since 9.5.0.63`

```pascal
function  UpdateInt(const jsonPath: string;
    value: Integer): Boolean;
```

Updates the value at `jsonPath` to a JSON number value, or creates the member and any missing path components as needed. The integer value is stored as a JSON number.

**Path-based operation:** `jsonPath` is interpreted using `DelimiterChar`, `PathPrefix`, and the `I`/`J`/`K` index substitutions.

Returns True for success, False for failure.

### JsonObject.UpdateNewArray

`Chilkat 11.7.0 · pascal · JsonObject · UpdateNewArray · method · since 9.5.0.75`

```pascal
function  UpdateNewArray(const jsonPath: string): Boolean;
```

Creates or replaces the value at `jsonPath` with a new empty JSON array. Missing path components are created automatically as needed.

Returns True for success, False for failure.

### JsonObject.UpdateNewObject

`Chilkat 11.7.0 · pascal · JsonObject · UpdateNewObject · method · since 9.5.0.75`

```pascal
function  UpdateNewObject(const jsonPath: string): Boolean;
```

Creates or replaces the value at `jsonPath` with a new empty JSON object. Missing path components are created automatically as needed.

Returns True for success, False for failure.

### JsonObject.UpdateNull

`Chilkat 11.7.0 · pascal · JsonObject · UpdateNull · method · since 9.5.0.65`

```pascal
function  UpdateNull(const jsonPath: string): Boolean;
```

Updates the value at `jsonPath` to a JSON null value, or creates the member and any missing path components as needed.

**Path-based operation:** `jsonPath` is interpreted using `DelimiterChar`, `PathPrefix`, and the `I`/`J`/`K` index substitutions.

Returns True for success, False for failure.

### JsonObject.UpdateNumber

`Chilkat 11.7.0 · pascal · JsonObject · UpdateNumber · method · since 9.5.0.65`

```pascal
function  UpdateNumber(const jsonPath: string;
    const numericStr: string): Boolean;
```

Updates the value at `jsonPath` to a JSON number value, or creates the member and any missing path components as needed. The `numericStr` argument is stored as the exact textual representation of the JSON number.

**Path-based operation:** `jsonPath` is interpreted using `DelimiterChar`, `PathPrefix`, and the `I`/`J`/`K` index substitutions.

**When to use:** Use `UpdateNumber` instead of `UpdateInt` for decimal/exponent forms, very large integers, or when preserving exact numeric text is important.

Returns True for success, False for failure.

### JsonObject.UpdateSb

`Chilkat 11.7.0 · pascal · JsonObject · UpdateSb · method · since 9.5.0.68`

```pascal
// sb is a TStringBuilder object.

function  UpdateSb(const jsonPath: string;
    sb: TChilkatBase): Boolean;
```

Updates the value at `jsonPath` to a JSON string value, or creates the member and any missing path components as needed. The new string value is taken from the contents of `sb`.

**Path-based operation:** `jsonPath` is interpreted using `DelimiterChar`, `PathPrefix`, and the `I`/`J`/`K` index substitutions.

Returns True for success, False for failure.

### JsonObject.UpdateString

`Chilkat 11.7.0 · pascal · JsonObject · UpdateString · method · since 9.5.0.63`

```pascal
function  UpdateString(const jsonPath: string;
    const value: string): Boolean;
```

Updates the value at `jsonPath` to a JSON string value, or creates the member and any missing path components as needed. The supplied string is JSON-escaped as needed.

**Path-based operation:** `jsonPath` is interpreted using `DelimiterChar`, `PathPrefix`, and the `I`/`J`/`K` index substitutions.

**Version note:** Chilkat versions prior to 9.5.0.68 did not correctly escape all characters for this method. Version 9.5.0.68 and later correct that behavior.

Returns True for success, False for failure.

### JsonObject.UpdateUInt

`Chilkat 11.7.0 · pascal · JsonObject · UpdateUInt · method · since 9.5.0.96`

```pascal
function  UpdateUInt(const jsonPath: string;
    value: LongWord): Boolean;
```

Updates the value at `jsonPath` to a JSON number value, or creates the member and any missing path components as needed. The unsigned integer is stored as a JSON number.

**Path-based operation:** `jsonPath` is interpreted using `DelimiterChar`, `PathPrefix`, and the `I`/`J`/`K` index substitutions.

Returns True for success, False for failure.

### JsonObject.WriteFile

`Chilkat 11.7.0 · pascal · JsonObject · WriteFile · method · since 9.5.0.76`

```pascal
function  WriteFile(const path: string): Boolean;
```

Serializes this JSON and writes it to the file at `path`. Output formatting follows `EmitCompact` and `EmitCrLf`.

Returns True for success, False for failure.

## Related classes

[`BinData`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/pascal/classes/BinData.md), [`CkDateTime`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/pascal/classes/CkDateTime.md), [`DtObj`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/pascal/classes/DtObj.md), [`Hashtable`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/pascal/classes/Hashtable.md), [`JsonArray`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/pascal/classes/JsonArray.md), [`StringBuilder`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/pascal/classes/StringBuilder.md), [`StringTable`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/pascal/classes/StringTable.md)

