---
product: Chilkat
product_version: 11.7.0
language: phpext
language_label: PHP Extension
class: JsonObject
class_name: CkJsonObject
license: free
deprecated: false
reference_html: https://www.chilkatsoft.com/refdoc/phpCkJsonObjectRef.html
---
# Chilkat JsonObject — PHP Extension — v11.7.0

> Chilkat 11.7.0 · language=phpext · class=JsonObject (CkJsonObject)
> 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/phpext/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

**Object Creation**

```php
$obj = new CkJsonObject();
```

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 PHP Extension.

How failure is reported depends on the method's return type and is stated in the note under each method below. In every case the diagnostic text is in the `LastErrorText` property of the object whose method was called.

## 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` | `string debugLogFilePath(); void put_DebugLogFilePath(string strVal);` | 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` | `(read-only) string lastErrorHtml();` | read-only | Provides HTML-formatted information about the last called method or property. |
| `LastErrorText` | `(read-only) string lastErrorText();` | read-only | Provides plain text information about the last called method or property. |
| `LastErrorXml` | `(read-only) string lastErrorXml();` | read-only | Provides XML-formatted information about the last called method or property. |
| `LastMethodSuccess` | `bool get_LastMethodSuccess() void put_LastMethodSuccess(bool boolVal);` | read/write | Indicates the success or failure of the most recent method call: `true` means success, `false` means failure. |
| `Utf8` | `bool get_Utf8() void put_Utf8(bool boolVal);` | read/write | When set to `true`, all `string` arguments and return values are interpreted as UTF-8 strings. |
| `VerboseLogging` | `bool get_VerboseLogging() void put_VerboseLogging(bool boolVal);` | read/write | If set to `true`, then the contents of LastErrorText (or LastErrorXml, or LastErrorHtml) may contain more verbose information. |
| `Version` | `(read-only) string version();` | read-only | Version of the component/library, such as "10.1.0" |

## Member index

| Member | Kind | Signature |
|---|---|---|
| `DelimiterChar` | property, read/write | `string delimiterChar(); void put_DelimiterChar(string strVal);` |
| `EmitCompact` | property, read/write | `bool get_EmitCompact() void put_EmitCompact(bool boolVal);` |
| `EmitCrLf` | property, read/write | `bool get_EmitCrLf() void put_EmitCrLf(bool boolVal);` |
| `EnableSecrets` | property, read/write | `bool get_EnableSecrets() void put_EnableSecrets(bool boolVal);` |
| `I` | property, read/write | `int get_I() void put_I(int intVal);` |
| `J` | property, read/write | `int get_J() void put_J(int intVal);` |
| `K` | property, read/write | `int get_K() void put_K(int intVal);` |
| `LowerCaseNames` | property, read/write | `bool get_LowerCaseNames() void put_LowerCaseNames(bool boolVal);` |
| `PathPrefix` | property, read/write | `string pathPrefix(); void put_PathPrefix(string strVal);` |
| `Size` | property, read-only | `(read-only) int get_Size()` |
| `Strict` | property, read/write | `bool get_Strict() void put_Strict(bool boolVal);` |
| `UncommonOptions` | property, read/write | `string uncommonOptions(); void put_UncommonOptions(string strVal);` |
| `AddArrayAt` | method | `bool AddArrayAt(int $index, string $name);` |
| `AddArrayCopyAt` | method | `bool AddArrayCopyAt(int $index, string $name, CkJsonArray $jarr);` |
| `AddBoolAt` | method | `bool AddBoolAt(int $index, string $name, bool $value);` |
| `AddIntAt` | method | `bool AddIntAt(int $index, string $name, int $value);` |
| `AddNullAt` | method | `bool AddNullAt(int $index, string $name);` |
| `AddNumberAt` | method | `bool AddNumberAt(int $index, string $name, string $numericStr);` |
| `AddObjectAt` | method | `bool AddObjectAt(int $index, string $name);` |
| `AddObjectCopyAt` | method | `bool AddObjectCopyAt(int $index, string $name, CkJsonObject $jsonObj);` |
| `AddStringAt` | method | `bool AddStringAt(int $index, string $name, string $value);` |
| `AppendArray` | method | `CkJsonArray AppendArray(string $name);` |
| `AppendArray2` | method | `bool AppendArray2(string $name, CkJsonArray $jarr);` |
| `AppendArrayCopy` | method | `bool AppendArrayCopy(string $name, CkJsonArray $jarr);` |
| `AppendBool` | method | `bool AppendBool(string $name, bool $value);` |
| `AppendInt` | method | `bool AppendInt(string $name, int $value);` |
| `AppendObject` | method | `CkJsonObject AppendObject(string $name);` |
| `AppendObject2` | method | `bool AppendObject2(string $name, CkJsonObject $jsonObj);` |
| `AppendObjectCopy` | method | `bool AppendObjectCopy(string $name, CkJsonObject $jsonObj);` |
| `AppendString` | method | `bool AppendString(string $name, string $value);` |
| `AppendStringArray` | method | `bool AppendStringArray(string $name, CkStringTable $values);` |
| `ArrayAt` | method | `CkJsonArray ArrayAt(int $index);` |
| `ArrayAt2` | method | `bool ArrayAt2(int $index, CkJsonArray $jarr);` |
| `ArrayOf` | method | `CkJsonArray ArrayOf(string $jsonPath);` |
| `ArrayOf2` | method | `bool ArrayOf2(string $jsonPath, CkJsonArray $jarr);` |
| `BoolAt` | method | `bool BoolAt(int $index);` |
| `BoolOf` | method | `bool BoolOf(string $jsonPath);` |
| `BytesOf` | method | `bool BytesOf(string $jsonPath, string $encoding, CkBinData $bd);` |
| `Clear` | method | `void Clear();` |
| `CopyRef` | method | `bool CopyRef(CkJsonObject $jsonObj);` |
| `DateOf` | method | `bool DateOf(string $jsonPath, CkDateTime $dt);` |
| `Delete` | method | `bool Delete(string $name);` |
| `DeleteAt` | method | `bool DeleteAt(int $index);` |
| `DeleteRecords` | method | `int DeleteRecords(string $arrayPath, string $relpath, string $value, bool $caseSensitive);` |
| `DtOf` | method | `bool DtOf(string $jsonPath, bool $bLocal, CkDtObj $dt);` |
| `Emit` | method | `bool Emit(CkString outStr); string emit();` |
| `EmitBd` | method | `bool EmitBd(CkBinData $bd);` |
| `EmitSb` | method | `bool EmitSb(CkStringBuilder $sb);` |
| `EmitWithSubs` | method | `bool EmitWithSubs(CkHashtable $subs, bool $omitEmpty, CkString outStr); string emitWithSubs(CkHashtable subs, bool omitEmpty);` |
| `FindObjectWithMember` | method | `CkJsonObject FindObjectWithMember(string $name);` |
| `FindObjectWithMember2` | method | `bool FindObjectWithMember2(string $name, CkJsonObject $jsonObj);` |
| `FindRecord` | method | `CkJsonObject FindRecord(string $arrayPath, string $relPath, string $value, bool $caseSensitive);` |
| `FindRecord2` | method | `bool FindRecord2(string $arrayPath, string $relPath, string $value, bool $caseSensitive, CkJsonObject $jsonObj);` |
| `FindRecordString` | method | `bool FindRecordString(string $arrayPath, string $relPath, string $value, bool $caseSensitive, string $retRelPath, CkString outStr); string findRecordString(string arrayPath, string relPath, string value, bool caseSensitive, string retRelPath);` |
| `FirebaseApplyEvent` | method | `bool FirebaseApplyEvent(string $name, string $data);` |
| `FirebasePatch` | method | `bool FirebasePatch(string $jsonPath, string $jsonData);` |
| `FirebasePut` | method | `bool FirebasePut(string $jsonPath, string $value);` |
| `GetDocRoot` | method | `CkJsonObject GetDocRoot();` |
| `GetDocRoot2` | method | `bool GetDocRoot2(CkJsonObject $docRoot);` |
| `HasMember` | method | `bool HasMember(string $jsonPath);` |
| `IndexOf` | method | `int IndexOf(string $name);` |
| `IntAt` | method | `int IntAt(int $index);` |
| `IntOf` | method | `int IntOf(string $jsonPath);` |
| `IsNullAt` | method | `bool IsNullAt(int $index);` |
| `IsNullOf` | method | `bool IsNullOf(string $jsonPath);` |
| `JsonTypeOf` | method | `int JsonTypeOf(string $jsonPath);` |
| `Load` | method | `bool Load(string $json);` |
| `LoadBd` | method | `bool LoadBd(CkBinData $bd);` |
| `LoadFile` | method | `bool LoadFile(string $path);` |
| `LoadPredefined` | method | `bool LoadPredefined(string $name);` |
| `LoadSb` | method | `bool LoadSb(CkStringBuilder $sb);` |
| `MakeCopy` | method | `bool MakeCopy(CkJsonObject $json);` |
| `MoveMember` | method | `bool MoveMember(int $fromIndex, int $toIndex);` |
| `NameAt` | method | `bool NameAt(int $index, CkString outStr); string nameAt(int index);` |
| `NewArrayOf` | method | `bool NewArrayOf(string $path, string $jArr);` |
| `NewObjectOf` | method | `bool NewObjectOf(string $path, string $jObj);` |
| `ObjectAt` | method | `CkJsonObject ObjectAt(int $index);` |
| `ObjectAt2` | method | `bool ObjectAt2(int $index, CkJsonObject $jsonObj);` |
| `ObjectOf` | method | `CkJsonObject ObjectOf(string $jsonPath);` |
| `ObjectOf2` | method | `bool ObjectOf2(string $jsonPath, CkJsonObject $jsonObj);` |
| `Predefine` | method | `bool Predefine(string $name);` |
| `Rename` | method | `bool Rename(string $oldName, string $newName);` |
| `RenameAt` | method | `bool RenameAt(int $index, string $name);` |
| `SetBoolAt` | method | `bool SetBoolAt(int $index, bool $value);` |
| `SetBoolOf` | method | `bool SetBoolOf(string $jsonPath, bool $value);` |
| `SetIntAt` | method | `bool SetIntAt(int $index, int $value);` |
| `SetIntOf` | method | `bool SetIntOf(string $jsonPath, int $value);` |
| `SetNullAt` | method | `bool SetNullAt(int $index);` |
| `SetNullOf` | method | `bool SetNullOf(string $jsonPath);` |
| `SetNumberAt` | method | `bool SetNumberAt(int $index, string $value);` |
| `SetNumberOf` | method | `bool SetNumberOf(string $jsonPath, string $value);` |
| `SetStringAt` | method | `bool SetStringAt(int $index, string $value);` |
| `SetStringOf` | method | `bool SetStringOf(string $jsonPath, string $value);` |
| `SizeOfArray` | method | `int SizeOfArray(string $jsonPath);` |
| `Sort` | method | `void Sort(bool $ascending, bool $caseSensitive);` |
| `StringAt` | method | `bool StringAt(int $index, CkString outStr); string stringAt(int index);` |
| `StringOf` | method | `bool StringOf(string $jsonPath, CkString outStr); string stringOf(string jsonPath);` |
| `StringOfEquals` | method | `bool StringOfEquals(string $jsonPath, string $value, bool $caseSensitive);` |
| `StringOfSb` | method | `bool StringOfSb(string $jsonPath, CkStringBuilder $sb);` |
| `Swap` | method | `bool Swap(int $index1, int $index2);` |
| `TypeAt` | method | `int TypeAt(int $index);` |
| `UIntOf` | method | `int UIntOf(string $jsonPath);` |
| `UpdateBd` | method | `bool UpdateBd(string $jsonPath, string $encoding, CkBinData $bd);` |
| `UpdateBool` | method | `bool UpdateBool(string $jsonPath, bool $value);` |
| `UpdateInt` | method | `bool UpdateInt(string $jsonPath, int $value);` |
| `UpdateNewArray` | method | `bool UpdateNewArray(string $jsonPath);` |
| `UpdateNewObject` | method | `bool UpdateNewObject(string $jsonPath);` |
| `UpdateNull` | method | `bool UpdateNull(string $jsonPath);` |
| `UpdateNumber` | method | `bool UpdateNumber(string $jsonPath, string $numericStr);` |
| `UpdateSb` | method | `bool UpdateSb(string $jsonPath, CkStringBuilder $sb);` |
| `UpdateString` | method | `bool UpdateString(string $jsonPath, string $value);` |
| `UpdateUInt` | method | `bool UpdateUInt(string $jsonPath, int $value);` |
| `WriteFile` | method | `bool WriteFile(string $path);` |

Deprecated members are listed at the end of this file with their replacements; do not use them in new code.

## Properties

### JsonObject.DelimiterChar

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

```php
string delimiterChar();

void put_DelimiterChar(string strVal);
```

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 · phpext · JsonObject · EmitCompact · property · read/write · since 9.5.0.56`

```php
bool get_EmitCompact()

void put_EmitCompact(bool boolVal);
```

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 · phpext · JsonObject · EmitCrLf · property · read/write · since 9.5.0.56`

```php
bool get_EmitCrLf()

void put_EmitCrLf(bool boolVal);
```

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 · phpext · JsonObject · EnableSecrets · property · read/write · since 11.5.0`

```php
bool get_EnableSecrets()

void put_EnableSecrets(bool boolVal);
```

**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 · phpext · JsonObject · I · property · read/write · since 9.5.0.56`

```php
int get_I()

void put_I(int intVal);
```

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 · phpext · JsonObject · J · property · read/write · since 9.5.0.56`

```php
int get_J()

void put_J(int intVal);
```

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 · phpext · JsonObject · K · property · read/write · since 9.5.0.56`

```php
int get_K()

void put_K(int intVal);
```

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 · phpext · JsonObject · LowerCaseNames · property · read/write · since 9.5.0.87`

```php
bool get_LowerCaseNames()

void put_LowerCaseNames(bool boolVal);
```

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 · phpext · JsonObject · PathPrefix · property · read/write · since 9.5.0.76`

```php
string pathPrefix();

void put_PathPrefix(string strVal);
```

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 · phpext · JsonObject · Size · property · read-only · since 9.5.0.56`

```php
(read-only)

int get_Size()
```

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 · phpext · JsonObject · Strict · property · read/write · since 11.6.0`

```php
bool get_Strict()

void put_Strict(bool boolVal);
```

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 · phpext · JsonObject · UncommonOptions · property · read/write · since 9.5.0.90`

```php
string uncommonOptions();

void put_UncommonOptions(string strVal);
```

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 · phpext · JsonObject · AddArrayAt · method · since 9.5.0.56`

```php
bool AddArrayAt(int $index, string $name);
```

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 · phpext · JsonObject · AddArrayCopyAt · method · since 9.5.0.82`

```php
bool AddArrayCopyAt(int $index, string $name, CkJsonArray $jarr);
```

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 · phpext · JsonObject · AddBoolAt · method · since 9.5.0.56`

```php
bool AddBoolAt(int $index, string $name, bool $value);
```

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 · phpext · JsonObject · AddIntAt · method · since 9.5.0.56`

```php
bool AddIntAt(int $index, string $name, int $value);
```

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 · phpext · JsonObject · AddNullAt · method · since 9.5.0.56`

```php
bool AddNullAt(int $index, string $name);
```

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 · phpext · JsonObject · AddNumberAt · method · since 9.5.0.56`

```php
bool AddNumberAt(int $index, string $name, string $numericStr);
```

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 · phpext · JsonObject · AddObjectAt · method · since 9.5.0.56`

```php
bool AddObjectAt(int $index, string $name);
```

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 · phpext · JsonObject · AddObjectCopyAt · method · since 9.5.0.82`

```php
bool AddObjectCopyAt(int $index, string $name, CkJsonObject $jsonObj);
```

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 · phpext · JsonObject · AddStringAt · method · since 9.5.0.56`

```php
bool AddStringAt(int $index, string $name, string $value);
```

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 · phpext · JsonObject · AppendArray · method · since 9.5.0.58`

```php
CkJsonArray AppendArray(string $name);
```

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 `null` on failure

### JsonObject.AppendArray2

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

```php
bool AppendArray2(string $name, CkJsonArray $jarr);
```

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 · phpext · JsonObject · AppendArrayCopy · method · since 9.5.0.82`

```php
bool AppendArrayCopy(string $name, CkJsonArray $jarr);
```

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 · phpext · JsonObject · AppendBool · method · since 9.5.0.58`

```php
bool AppendBool(string $name, bool $value);
```

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 · phpext · JsonObject · AppendInt · method · since 9.5.0.58`

```php
bool AppendInt(string $name, int $value);
```

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 · phpext · JsonObject · AppendObject · method · since 9.5.0.58`

```php
CkJsonObject AppendObject(string $name);
```

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 `null` on failure

### JsonObject.AppendObject2

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

```php
bool AppendObject2(string $name, CkJsonObject $jsonObj);
```

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 · phpext · JsonObject · AppendObjectCopy · method · since 9.5.0.82`

```php
bool AppendObjectCopy(string $name, CkJsonObject $jsonObj);
```

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 · phpext · JsonObject · AppendString · method · since 9.5.0.58`

```php
bool AppendString(string $name, string $value);
```

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 · phpext · JsonObject · AppendStringArray · method · since 9.5.0.67`

```php
bool AppendStringArray(string $name, CkStringTable $values);
```

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 · phpext · JsonObject · ArrayAt · method · since 9.5.0.56`

```php
CkJsonArray ArrayAt(int $index);
```

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 `null` on failure

### JsonObject.ArrayAt2

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

```php
bool ArrayAt2(int $index, CkJsonArray $jarr);
```

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 · phpext · JsonObject · ArrayOf · method · since 9.5.0.56`

```php
CkJsonArray ArrayOf(string $jsonPath);
```

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 `null` on failure

### JsonObject.ArrayOf2

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

```php
bool ArrayOf2(string $jsonPath, CkJsonArray $jarr);
```

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 · phpext · JsonObject · BoolAt · method · since 9.5.0.56`

```php
bool BoolAt(int $index);
```

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 · phpext · JsonObject · BoolOf · method · since 9.5.0.56`

```php
bool BoolOf(string $jsonPath);
```

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 · phpext · JsonObject · BytesOf · method · since 9.5.0.68`

```php
bool BytesOf(string $jsonPath, string $encoding, CkBinData $bd);
```

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 · phpext · JsonObject · Clear · method · since 9.5.0.76`

```php
void Clear();
```

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

### JsonObject.CopyRef

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

```php
bool CopyRef(CkJsonObject $jsonObj);
```

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 · phpext · JsonObject · DateOf · method · since 9.5.0.73`

```php
bool DateOf(string $jsonPath, CkDateTime $dt);
```

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 · phpext · JsonObject · Delete · method · since 9.5.0.56`

```php
bool Delete(string $name);
```

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 · phpext · JsonObject · DeleteAt · method · since 9.5.0.56`

```php
bool DeleteAt(int $index);
```

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 · phpext · JsonObject · DeleteRecords · method · since 9.5.0.88`

```php
int DeleteRecords(string $arrayPath, string $relpath, string $value, bool $caseSensitive);
```

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 · phpext · JsonObject · DtOf · method · since 9.5.0.73`

```php
bool DtOf(string $jsonPath, bool $bLocal, CkDtObj $dt);
```

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 · phpext · JsonObject · Emit · method · since 9.5.0.56`

```php
bool Emit(CkString outStr);

string emit();
```

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 · phpext · JsonObject · EmitBd · method · since 9.5.0.77`

```php
bool EmitBd(CkBinData $bd);
```

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 · phpext · JsonObject · EmitSb · method · since 9.5.0.62`

```php
bool EmitSb(CkStringBuilder $sb);
```

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 · phpext · JsonObject · EmitWithSubs · method · since 9.5.0.67`

```php
bool EmitWithSubs(CkHashtable $subs, bool $omitEmpty, CkString outStr);

string emitWithSubs(CkHashtable subs, bool omitEmpty);
```

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 · phpext · JsonObject · FindObjectWithMember · method · since 9.5.0.67`

```php
CkJsonObject FindObjectWithMember(string $name);
```

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

Returns `null` on failure

### JsonObject.FindObjectWithMember2

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

```php
bool FindObjectWithMember2(string $name, CkJsonObject $jsonObj);
```

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 · phpext · JsonObject · FindRecord · method · since 9.5.0.63`

```php
CkJsonObject FindRecord(string $arrayPath, string $relPath, string $value, bool $caseSensitive);
```

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 `null` on failure

### JsonObject.FindRecord2

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

```php
bool FindRecord2(string $arrayPath, string $relPath, string $value, bool $caseSensitive, CkJsonObject $jsonObj);
```

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 · phpext · JsonObject · FindRecordString · method · since 9.5.0.63`

```php
bool FindRecordString(string $arrayPath, string $relPath, string $value, bool $caseSensitive, string $retRelPath, CkString outStr);

string findRecordString(string arrayPath, string relPath, string value, bool caseSensitive, string retRelPath);
```

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 · phpext · JsonObject · FirebaseApplyEvent · method · since 9.5.0.58`

```php
bool FirebaseApplyEvent(string $name, string $data);
```

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 · phpext · JsonObject · FirebasePatch · method · since 9.5.0.58`

```php
bool FirebasePatch(string $jsonPath, string $jsonData);
```

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 · phpext · JsonObject · FirebasePut · method · since 9.5.0.58`

```php
bool FirebasePut(string $jsonPath, string $value);
```

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 · phpext · JsonObject · GetDocRoot · method · since 9.5.0.56`

```php
CkJsonObject GetDocRoot();
```

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 `null` on failure

### JsonObject.GetDocRoot2

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

```php
bool GetDocRoot2(CkJsonObject $docRoot);
```

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 · phpext · JsonObject · HasMember · method · since 9.5.0.58`

```php
bool HasMember(string $jsonPath);
```

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 · phpext · JsonObject · IndexOf · method · since 9.5.0.56`

```php
int IndexOf(string $name);
```

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 · phpext · JsonObject · IntAt · method · since 9.5.0.56`

```php
int IntAt(int $index);
```

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 · phpext · JsonObject · IntOf · method · since 9.5.0.56`

```php
int IntOf(string $jsonPath);
```

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 · phpext · JsonObject · IsNullAt · method · since 9.5.0.56`

```php
bool IsNullAt(int $index);
```

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

### JsonObject.IsNullOf

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

```php
bool IsNullOf(string $jsonPath);
```

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 · phpext · JsonObject · JsonTypeOf · method · since 9.5.0.68`

```php
int JsonTypeOf(string $jsonPath);
```

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 · phpext · JsonObject · Load · method · since 9.5.0.56`

```php
bool Load(string $json);
```

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 · phpext · JsonObject · LoadBd · method · since 9.5.0.77`

```php
bool LoadBd(CkBinData $bd);
```

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 · phpext · JsonObject · LoadFile · method · since 9.5.0.56`

```php
bool LoadFile(string $path);
```

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 · phpext · JsonObject · LoadPredefined · method · since 9.5.0.67`

```php
bool LoadPredefined(string $name);
```

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 · phpext · JsonObject · LoadSb · method · since 9.5.0.62`

```php
bool LoadSb(CkStringBuilder $sb);
```

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 · phpext · JsonObject · MakeCopy · method · since 11.0.0`

```php
bool MakeCopy(CkJsonObject $json);
```

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 · phpext · JsonObject · MoveMember · method · since 9.5.0.80`

```php
bool MoveMember(int $fromIndex, int $toIndex);
```

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 · phpext · JsonObject · NameAt · method · since 9.5.0.56`

```php
bool NameAt(int $index, CkString outStr);

string nameAt(int index);
```

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 · phpext · JsonObject · NewArrayOf · method · since 11.4.0`

```php
bool NewArrayOf(string $path, string $jArr);
```

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 · phpext · JsonObject · NewObjectOf · method · since 11.4.0`

```php
bool NewObjectOf(string $path, string $jObj);
```

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 · phpext · JsonObject · ObjectAt · method · since 9.5.0.56`

```php
CkJsonObject ObjectAt(int $index);
```

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 `null` on failure

### JsonObject.ObjectAt2

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

```php
bool ObjectAt2(int $index, CkJsonObject $jsonObj);
```

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 · phpext · JsonObject · ObjectOf · method · since 9.5.0.56`

```php
CkJsonObject ObjectOf(string $jsonPath);
```

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 `null` on failure

### JsonObject.ObjectOf2

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

```php
bool ObjectOf2(string $jsonPath, CkJsonObject $jsonObj);
```

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 · phpext · JsonObject · Predefine · method · since 9.5.0.67`

```php
bool Predefine(string $name);
```

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 · phpext · JsonObject · Rename · method · since 9.5.0.56`

```php
bool Rename(string $oldName, string $newName);
```

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 · phpext · JsonObject · RenameAt · method · since 9.5.0.56`

```php
bool RenameAt(int $index, string $name);
```

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 · phpext · JsonObject · SetBoolAt · method · since 9.5.0.56`

```php
bool SetBoolAt(int $index, bool $value);
```

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 · phpext · JsonObject · SetBoolOf · method · since 9.5.0.56`

```php
bool SetBoolOf(string $jsonPath, bool $value);
```

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 · phpext · JsonObject · SetIntAt · method · since 9.5.0.56`

```php
bool SetIntAt(int $index, int $value);
```

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 · phpext · JsonObject · SetIntOf · method · since 9.5.0.56`

```php
bool SetIntOf(string $jsonPath, int $value);
```

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 · phpext · JsonObject · SetNullAt · method · since 9.5.0.56`

```php
bool SetNullAt(int $index);
```

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 · phpext · JsonObject · SetNullOf · method · since 9.5.0.56`

```php
bool SetNullOf(string $jsonPath);
```

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 · phpext · JsonObject · SetNumberAt · method · since 9.5.0.56`

```php
bool SetNumberAt(int $index, string $value);
```

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 · phpext · JsonObject · SetNumberOf · method · since 9.5.0.56`

```php
bool SetNumberOf(string $jsonPath, string $value);
```

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 · phpext · JsonObject · SetStringAt · method · since 9.5.0.56`

```php
bool SetStringAt(int $index, string $value);
```

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 · phpext · JsonObject · SetStringOf · method · since 9.5.0.56`

```php
bool SetStringOf(string $jsonPath, string $value);
```

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 · phpext · JsonObject · SizeOfArray · method · since 9.5.0.56`

```php
int SizeOfArray(string $jsonPath);
```

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 · phpext · JsonObject · Sort · method · since 9.5.0.100`

```php
void Sort(bool $ascending, bool $caseSensitive);
```

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 · phpext · JsonObject · StringAt · method · since 9.5.0.56`

```php
bool StringAt(int $index, CkString outStr);

string stringAt(int index);
```

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 · phpext · JsonObject · StringOf · method · since 9.5.0.56`

```php
bool StringOf(string $jsonPath, CkString outStr);

string stringOf(string jsonPath);
```

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 · phpext · JsonObject · StringOfEquals · method · since 9.5.0.96`

```php
bool StringOfEquals(string $jsonPath, string $value, bool $caseSensitive);
```

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

### JsonObject.StringOfSb

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

```php
bool StringOfSb(string $jsonPath, CkStringBuilder $sb);
```

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 · phpext · JsonObject · Swap · method · since 9.5.0.76`

```php
bool Swap(int $index1, int $index2);
```

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 · phpext · JsonObject · TypeAt · method · since 9.5.0.58`

```php
int TypeAt(int $index);
```

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 · phpext · JsonObject · UIntOf · method · since 9.5.0.96`

```php
int UIntOf(string $jsonPath);
```

Returns the unsigned integer value at `jsonPath`.

### JsonObject.UpdateBd

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

```php
bool UpdateBd(string $jsonPath, string $encoding, CkBinData $bd);
```

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 · phpext · JsonObject · UpdateBool · method · since 9.5.0.63`

```php
bool UpdateBool(string $jsonPath, bool $value);
```

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 · phpext · JsonObject · UpdateInt · method · since 9.5.0.63`

```php
bool UpdateInt(string $jsonPath, int $value);
```

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 · phpext · JsonObject · UpdateNewArray · method · since 9.5.0.75`

```php
bool UpdateNewArray(string $jsonPath);
```

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 · phpext · JsonObject · UpdateNewObject · method · since 9.5.0.75`

```php
bool UpdateNewObject(string $jsonPath);
```

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 · phpext · JsonObject · UpdateNull · method · since 9.5.0.65`

```php
bool UpdateNull(string $jsonPath);
```

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 · phpext · JsonObject · UpdateNumber · method · since 9.5.0.65`

```php
bool UpdateNumber(string $jsonPath, string $numericStr);
```

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 · phpext · JsonObject · UpdateSb · method · since 9.5.0.68`

```php
bool UpdateSb(string $jsonPath, CkStringBuilder $sb);
```

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 · phpext · JsonObject · UpdateString · method · since 9.5.0.63`

```php
bool UpdateString(string $jsonPath, string $value);
```

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 · phpext · JsonObject · UpdateUInt · method · since 9.5.0.96`

```php
bool UpdateUInt(string $jsonPath, int $value);
```

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 · phpext · JsonObject · WriteFile · method · since 9.5.0.76`

```php
bool WriteFile(string $path);
```

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

Returns true for success, false for failure.

## Deprecated members — do not use in new code

| Member | Kind | Deprecated in | Use instead |
|---|---|---|---|
| `Clone` | method | before 11.6.1 | `MakeCopy` |

## Related classes

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

