---
product: Chilkat
product_version: 11.7.0
language: objc
language_label: Objective-C
class: JsonObject
class_name: CkoJsonObject
license: free
deprecated: false
reference_html: https://www.chilkatsoft.com/refdoc/objcCkoJsonObjectRef.html
---
# Chilkat JsonObject — Objective-C — v11.7.0

> Chilkat 11.7.0 · language=objc · class=JsonObject (CkoJsonObject)
> 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/objc/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**

```objectivec
CkoJsonObject *obj = [[CkoJsonObject alloc] init];
```

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 Objective-C.

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` | `@property (nonatomic, copy) NSString *DebugLogFilePath;` | 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 (nonatomic, readonly, copy) NSString *LastErrorHtml;` | read-only | Provides HTML-formatted information about the last called method or property. |
| `LastErrorText` | `@property (nonatomic, readonly, copy) NSString *LastErrorText;` | read-only | Provides plain text information about the last called method or property. |
| `LastErrorXml` | `@property (nonatomic, readonly, copy) NSString *LastErrorXml;` | read-only | Provides XML-formatted information about the last called method or property. |
| `LastMethodSuccess` | `@property (nonatomic) BOOL LastMethodSuccess;` | read/write | Indicates the success or failure of the most recent method call: `YES` means success, `NO` means failure. |
| `VerboseLogging` | `@property (nonatomic) BOOL VerboseLogging;` | read/write | If set to `YES`, then the contents of LastErrorText (or LastErrorXml, or LastErrorHtml) may contain more verbose information. |
| `Version` | `@property (nonatomic, readonly, copy) NSString *Version;` | read-only | Version of the component/library, such as "10.1.0" |

## Member index

| Member | Kind | Signature |
|---|---|---|
| `DelimiterChar` | property, read/write | `@property (nonatomic, copy) NSString *DelimiterChar;` |
| `EmitCompact` | property, read/write | `@property (nonatomic) BOOL EmitCompact;` |
| `EmitCrLf` | property, read/write | `@property (nonatomic) BOOL EmitCrLf;` |
| `EnableSecrets` | property, read/write | `@property (nonatomic) BOOL EnableSecrets;` |
| `I` | property, read/write | `@property (nonatomic, copy) NSNumber *I;` |
| `J` | property, read/write | `@property (nonatomic, copy) NSNumber *J;` |
| `K` | property, read/write | `@property (nonatomic, copy) NSNumber *K;` |
| `LowerCaseNames` | property, read/write | `@property (nonatomic) BOOL LowerCaseNames;` |
| `PathPrefix` | property, read/write | `@property (nonatomic, copy) NSString *PathPrefix;` |
| `Size` | property, read-only | `@property (nonatomic, readonly, copy) NSNumber *Size;` |
| `Strict` | property, read/write | `@property (nonatomic) BOOL Strict;` |
| `UncommonOptions` | property, read/write | `@property (nonatomic, copy) NSString *UncommonOptions;` |
| `AddArrayAt` | method | `- (BOOL)AddArrayAt:(NSNumber *)index     name:(NSString *)name;` |
| `AddArrayCopyAt` | method | `- (BOOL)AddArrayCopyAt:(NSNumber *)index     name:(NSString *)name     jarr:(CkoJsonArray *)jarr;` |
| `AddBoolAt` | method | `- (BOOL)AddBoolAt:(NSNumber *)index     name:(NSString *)name     value:(BOOL)value;` |
| `AddIntAt` | method | `- (BOOL)AddIntAt:(NSNumber *)index     name:(NSString *)name     value:(NSNumber *)value;` |
| `AddNullAt` | method | `- (BOOL)AddNullAt:(NSNumber *)index     name:(NSString *)name;` |
| `AddNumberAt` | method | `- (BOOL)AddNumberAt:(NSNumber *)index     name:(NSString *)name     numericStr:(NSString *)numericStr;` |
| `AddObjectAt` | method | `- (BOOL)AddObjectAt:(NSNumber *)index     name:(NSString *)name;` |
| `AddObjectCopyAt` | method | `- (BOOL)AddObjectCopyAt:(NSNumber *)index     name:(NSString *)name     jsonObj:(CkoJsonObject *)jsonObj;` |
| `AddStringAt` | method | `- (BOOL)AddStringAt:(NSNumber *)index     name:(NSString *)name     value:(NSString *)value;` |
| `AppendArray` | method | `- (CkoJsonArray *)AppendArray:(NSString *)name;` |
| `AppendArray2` | method | `- (BOOL)AppendArray2:(NSString *)name     jarr:(CkoJsonArray *)jarr;` |
| `AppendArrayCopy` | method | `- (BOOL)AppendArrayCopy:(NSString *)name     jarr:(CkoJsonArray *)jarr;` |
| `AppendBool` | method | `- (BOOL)AppendBool:(NSString *)name     value:(BOOL)value;` |
| `AppendInt` | method | `- (BOOL)AppendInt:(NSString *)name     value:(NSNumber *)value;` |
| `AppendObject` | method | `- (CkoJsonObject *)AppendObject:(NSString *)name;` |
| `AppendObject2` | method | `- (BOOL)AppendObject2:(NSString *)name     jsonObj:(CkoJsonObject *)jsonObj;` |
| `AppendObjectCopy` | method | `- (BOOL)AppendObjectCopy:(NSString *)name     jsonObj:(CkoJsonObject *)jsonObj;` |
| `AppendString` | method | `- (BOOL)AppendString:(NSString *)name     value:(NSString *)value;` |
| `AppendStringArray` | method | `- (BOOL)AppendStringArray:(NSString *)name     values:(CkoStringTable *)values;` |
| `ArrayAt` | method | `- (CkoJsonArray *)ArrayAt:(NSNumber *)index;` |
| `ArrayAt2` | method | `- (BOOL)ArrayAt2:(NSNumber *)index     jarr:(CkoJsonArray *)jarr;` |
| `ArrayOf` | method | `- (CkoJsonArray *)ArrayOf:(NSString *)jsonPath;` |
| `ArrayOf2` | method | `- (BOOL)ArrayOf2:(NSString *)jsonPath     jarr:(CkoJsonArray *)jarr;` |
| `BoolAt` | method | `- (BOOL)BoolAt:(NSNumber *)index;` |
| `BoolOf` | method | `- (BOOL)BoolOf:(NSString *)jsonPath;` |
| `BytesOf` | method | `- (BOOL)BytesOf:(NSString *)jsonPath     encoding:(NSString *)encoding     bd:(CkoBinData *)bd;` |
| `Clear` | method | `- (void)Clear;` |
| `CopyRef` | method | `- (BOOL)CopyRef:(CkoJsonObject *)jsonObj;` |
| `DateOf` | method | `- (BOOL)DateOf:(NSString *)jsonPath     dateTime:(CkoDateTime *)dateTime;` |
| `Delete` | method | `- (BOOL)Delete:(NSString *)name;` |
| `DeleteAt` | method | `- (BOOL)DeleteAt:(NSNumber *)index;` |
| `DeleteRecords` | method | `- (NSNumber *)DeleteRecords:(NSString *)arrayPath     relpath:(NSString *)relpath     value:(NSString *)value     caseSensitive:(BOOL)caseSensitive;` |
| `DtOf` | method | `- (BOOL)DtOf:(NSString *)jsonPath     bLocal:(BOOL)bLocal     dt:(CkoDtObj *)dt;` |
| `Emit` | method | `- (NSString *)Emit;` |
| `EmitBd` | method | `- (BOOL)EmitBd:(CkoBinData *)bd;` |
| `EmitSb` | method | `- (BOOL)EmitSb:(CkoStringBuilder *)sb;` |
| `EmitWithSubs` | method | `- (NSString *)EmitWithSubs:(CkoHashtable *)subs     omitEmpty:(BOOL)omitEmpty;` |
| `FindObjectWithMember` | method | `- (CkoJsonObject *)FindObjectWithMember:(NSString *)name;` |
| `FindObjectWithMember2` | method | `- (BOOL)FindObjectWithMember2:(NSString *)name     jsonObj:(CkoJsonObject *)jsonObj;` |
| `FindRecord` | method | `- (CkoJsonObject *)FindRecord:(NSString *)arrayPath     relPath:(NSString *)relPath     value:(NSString *)value     caseSensitive:(BOOL)caseSensitive;` |
| `FindRecord2` | method | `- (BOOL)FindRecord2:(NSString *)arrayPath     relPath:(NSString *)relPath     value:(NSString *)value     caseSensitive:(BOOL)caseSensitive     jsonObj:(CkoJsonObject *)jsonObj;` |
| `FindRecordString` | method | `- (NSString *)FindRecordString:(NSString *)arrayPath     relPath:(NSString *)relPath     value:(NSString *)value     caseSensitive:(BOOL)caseSensitive     retRelPath:(NSString *)retRelPath;` |
| `FirebaseApplyEvent` | method | `- (BOOL)FirebaseApplyEvent:(NSString *)name     data:(NSString *)data;` |
| `FirebasePatch` | method | `- (BOOL)FirebasePatch:(NSString *)jsonPath     jsonData:(NSString *)jsonData;` |
| `FirebasePut` | method | `- (BOOL)FirebasePut:(NSString *)jsonPath     value:(NSString *)value;` |
| `GetDocRoot` | method | `- (CkoJsonObject *)GetDocRoot;` |
| `GetDocRoot2` | method | `- (BOOL)GetDocRoot2:(CkoJsonObject *)docRoot;` |
| `HasMember` | method | `- (BOOL)HasMember:(NSString *)jsonPath;` |
| `IndexOf` | method | `- (NSNumber *)IndexOf:(NSString *)name;` |
| `IntAt` | method | `- (NSNumber *)IntAt:(NSNumber *)index;` |
| `IntOf` | method | `- (NSNumber *)IntOf:(NSString *)jsonPath;` |
| `IsNullAt` | method | `- (BOOL)IsNullAt:(NSNumber *)index;` |
| `IsNullOf` | method | `- (BOOL)IsNullOf:(NSString *)jsonPath;` |
| `JsonTypeOf` | method | `- (NSNumber *)JsonTypeOf:(NSString *)jsonPath;` |
| `Load` | method | `- (BOOL)Load:(NSString *)json;` |
| `LoadBd` | method | `- (BOOL)LoadBd:(CkoBinData *)bd;` |
| `LoadFile` | method | `- (BOOL)LoadFile:(NSString *)path;` |
| `LoadPredefined` | method | `- (BOOL)LoadPredefined:(NSString *)name;` |
| `LoadSb` | method | `- (BOOL)LoadSb:(CkoStringBuilder *)sb;` |
| `MakeCopy` | method | `- (BOOL)MakeCopy:(CkoJsonObject *)json;` |
| `MoveMember` | method | `- (BOOL)MoveMember:(NSNumber *)fromIndex     toIndex:(NSNumber *)toIndex;` |
| `NameAt` | method | `- (NSString *)NameAt:(NSNumber *)index;` |
| `NewArrayOf` | method | `- (BOOL)NewArrayOf:(NSString *)path     jArr:(NSString *)jArr;` |
| `NewObjectOf` | method | `- (BOOL)NewObjectOf:(NSString *)path     jObj:(NSString *)jObj;` |
| `ObjectAt` | method | `- (CkoJsonObject *)ObjectAt:(NSNumber *)index;` |
| `ObjectAt2` | method | `- (BOOL)ObjectAt2:(NSNumber *)index     jsonObj:(CkoJsonObject *)jsonObj;` |
| `ObjectOf` | method | `- (CkoJsonObject *)ObjectOf:(NSString *)jsonPath;` |
| `ObjectOf2` | method | `- (BOOL)ObjectOf2:(NSString *)jsonPath     jsonObj:(CkoJsonObject *)jsonObj;` |
| `Predefine` | method | `- (BOOL)Predefine:(NSString *)name;` |
| `Rename` | method | `- (BOOL)Rename:(NSString *)oldName     newName:(NSString *)newName;` |
| `RenameAt` | method | `- (BOOL)RenameAt:(NSNumber *)index     name:(NSString *)name;` |
| `SetBoolAt` | method | `- (BOOL)SetBoolAt:(NSNumber *)index     value:(BOOL)value;` |
| `SetBoolOf` | method | `- (BOOL)SetBoolOf:(NSString *)jsonPath     value:(BOOL)value;` |
| `SetIntAt` | method | `- (BOOL)SetIntAt:(NSNumber *)index     value:(NSNumber *)value;` |
| `SetIntOf` | method | `- (BOOL)SetIntOf:(NSString *)jsonPath     value:(NSNumber *)value;` |
| `SetNullAt` | method | `- (BOOL)SetNullAt:(NSNumber *)index;` |
| `SetNullOf` | method | `- (BOOL)SetNullOf:(NSString *)jsonPath;` |
| `SetNumberAt` | method | `- (BOOL)SetNumberAt:(NSNumber *)index     value:(NSString *)value;` |
| `SetNumberOf` | method | `- (BOOL)SetNumberOf:(NSString *)jsonPath     value:(NSString *)value;` |
| `SetStringAt` | method | `- (BOOL)SetStringAt:(NSNumber *)index     value:(NSString *)value;` |
| `SetStringOf` | method | `- (BOOL)SetStringOf:(NSString *)jsonPath     value:(NSString *)value;` |
| `SizeOfArray` | method | `- (NSNumber *)SizeOfArray:(NSString *)jsonPath;` |
| `Sort` | method | `- (void)Sort:(BOOL)ascending     caseSensitive:(BOOL)caseSensitive;` |
| `StringAt` | method | `- (NSString *)StringAt:(NSNumber *)index;` |
| `StringOf` | method | `- (NSString *)StringOf:(NSString *)jsonPath;` |
| `StringOfEquals` | method | `- (BOOL)StringOfEquals:(NSString *)jsonPath     value:(NSString *)value     caseSensitive:(BOOL)caseSensitive;` |
| `StringOfSb` | method | `- (BOOL)StringOfSb:(NSString *)jsonPath     sb:(CkoStringBuilder *)sb;` |
| `Swap` | method | `- (BOOL)Swap:(NSNumber *)index1     index2:(NSNumber *)index2;` |
| `TypeAt` | method | `- (NSNumber *)TypeAt:(NSNumber *)index;` |
| `UIntOf` | method | `- (NSNumber *)UIntOf:(NSString *)jsonPath;` |
| `UpdateBd` | method | `- (BOOL)UpdateBd:(NSString *)jsonPath     encoding:(NSString *)encoding     bd:(CkoBinData *)bd;` |
| `UpdateBool` | method | `- (BOOL)UpdateBool:(NSString *)jsonPath     value:(BOOL)value;` |
| `UpdateInt` | method | `- (BOOL)UpdateInt:(NSString *)jsonPath     value:(NSNumber *)value;` |
| `UpdateNewArray` | method | `- (BOOL)UpdateNewArray:(NSString *)jsonPath;` |
| `UpdateNewObject` | method | `- (BOOL)UpdateNewObject:(NSString *)jsonPath;` |
| `UpdateNull` | method | `- (BOOL)UpdateNull:(NSString *)jsonPath;` |
| `UpdateNumber` | method | `- (BOOL)UpdateNumber:(NSString *)jsonPath     numericStr:(NSString *)numericStr;` |
| `UpdateSb` | method | `- (BOOL)UpdateSb:(NSString *)jsonPath     sb:(CkoStringBuilder *)sb;` |
| `UpdateString` | method | `- (BOOL)UpdateString:(NSString *)jsonPath     value:(NSString *)value;` |
| `UpdateUInt` | method | `- (BOOL)UpdateUInt:(NSString *)jsonPath     value:(NSNumber *)value;` |
| `WriteFile` | method | `- (BOOL)WriteFile:(NSString *)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 · objc · JsonObject · DelimiterChar · property · read/write · since 9.5.0.58`

```objectivec
@property (nonatomic, copy) NSString *DelimiterChar;
```

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

```objectivec
@property (nonatomic) BOOL EmitCompact;
```

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

|  |  |
| --- | --- |
| `YES` | Emit a compact representation with no extra formatting whitespace. |
| `NO` | 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 · objc · JsonObject · EmitCrLf · property · read/write · since 9.5.0.56`

```objectivec
@property (nonatomic) BOOL EmitCrLf;
```

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

|  |  |
| --- | --- |
| `YES` | Use CRLF line endings. |
| `NO` | Use LF line endings. |

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

### JsonObject.EnableSecrets

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

```objectivec
@property (nonatomic) BOOL EnableSecrets;
```

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

```objectivec
@property (nonatomic, copy) NSNumber *I;
```

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

```objectivec
@property (nonatomic, copy) NSNumber *J;
```

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

```objectivec
@property (nonatomic, copy) NSNumber *K;
```

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

```objectivec
@property (nonatomic) BOOL LowerCaseNames;
```

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

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

```objectivec
@property (nonatomic, copy) NSString *PathPrefix;
```

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

```objectivec
@property (nonatomic, readonly, copy) NSNumber *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 · objc · JsonObject · Strict · property · read/write · since 11.6.0`

```objectivec
@property (nonatomic) BOOL Strict;
```

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 `NO`.

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

```objectivec
@property (nonatomic, copy) NSString *UncommonOptions;
```

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

```objectivec
- (BOOL)AddArrayAt:(NSNumber *)index 
    name:(NSString *)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 YES for success, NO for failure.

### JsonObject.AddArrayCopyAt

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

```objectivec
- (BOOL)AddArrayCopyAt:(NSNumber *)index 
    name:(NSString *)name 
    jarr:(CkoJsonArray *)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 YES for success, NO for failure.

### JsonObject.AddBoolAt

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

```objectivec
- (BOOL)AddBoolAt:(NSNumber *)index 
    name:(NSString *)name 
    value:(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 YES for success, NO for failure.

### JsonObject.AddIntAt

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

```objectivec
- (BOOL)AddIntAt:(NSNumber *)index 
    name:(NSString *)name 
    value:(NSNumber *)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 YES for success, NO for failure.

### JsonObject.AddNullAt

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

```objectivec
- (BOOL)AddNullAt:(NSNumber *)index 
    name:(NSString *)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 YES for success, NO for failure.

### JsonObject.AddNumberAt

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

```objectivec
- (BOOL)AddNumberAt:(NSNumber *)index 
    name:(NSString *)name 
    numericStr:(NSString *)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 YES for success, NO for failure.

### JsonObject.AddObjectAt

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

```objectivec
- (BOOL)AddObjectAt:(NSNumber *)index 
    name:(NSString *)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 YES for success, NO for failure.

### JsonObject.AddObjectCopyAt

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

```objectivec
- (BOOL)AddObjectCopyAt:(NSNumber *)index 
    name:(NSString *)name 
    jsonObj:(CkoJsonObject *)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 YES for success, NO for failure.

### JsonObject.AddStringAt

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

```objectivec
- (BOOL)AddStringAt:(NSNumber *)index 
    name:(NSString *)name 
    value:(NSString *)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 YES for success, NO for failure.

### JsonObject.AppendArray

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

```objectivec
- (CkoJsonArray *)AppendArray:(NSString *)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 `nil` on failure

### JsonObject.AppendArray2

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

```objectivec
- (BOOL)AppendArray2:(NSString *)name 
    jarr:(CkoJsonArray *)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 `YES` 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 YES for success, NO for failure.

### JsonObject.AppendArrayCopy

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

```objectivec
- (BOOL)AppendArrayCopy:(NSString *)name 
    jarr:(CkoJsonArray *)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 YES for success, NO for failure.

### JsonObject.AppendBool

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

```objectivec
- (BOOL)AppendBool:(NSString *)name 
    value:(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 YES for success, NO for failure.

### JsonObject.AppendInt

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

```objectivec
- (BOOL)AppendInt:(NSString *)name 
    value:(NSNumber *)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 YES for success, NO for failure.

### JsonObject.AppendObject

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

```objectivec
- (CkoJsonObject *)AppendObject:(NSString *)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 `nil` on failure

### JsonObject.AppendObject2

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

```objectivec
- (BOOL)AppendObject2:(NSString *)name 
    jsonObj:(CkoJsonObject *)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 `YES` 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 YES for success, NO for failure.

### JsonObject.AppendObjectCopy

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

```objectivec
- (BOOL)AppendObjectCopy:(NSString *)name 
    jsonObj:(CkoJsonObject *)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 YES for success, NO for failure.

### JsonObject.AppendString

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

```objectivec
- (BOOL)AppendString:(NSString *)name 
    value:(NSString *)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 YES for success, NO for failure.

### JsonObject.AppendStringArray

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

```objectivec
- (BOOL)AppendStringArray:(NSString *)name 
    values:(CkoStringTable *)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 YES for success, NO for failure.

### JsonObject.ArrayAt

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

```objectivec
- (CkoJsonArray *)ArrayAt:(NSNumber *)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 `nil` on failure

### JsonObject.ArrayAt2

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

```objectivec
- (BOOL)ArrayAt2:(NSNumber *)index 
    jarr:(CkoJsonArray *)jarr;
```

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

Returns YES for success, NO for failure.

### JsonObject.ArrayOf

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

```objectivec
- (CkoJsonArray *)ArrayOf:(NSString *)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 `nil` on failure

### JsonObject.ArrayOf2

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

```objectivec
- (BOOL)ArrayOf2:(NSString *)jsonPath 
    jarr:(CkoJsonArray *)jarr;
```

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

Returns YES for success, NO for failure.

### JsonObject.BoolAt

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

```objectivec
- (BOOL)BoolAt:(NSNumber *)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 · objc · JsonObject · BoolOf · method · since 9.5.0.56`

```objectivec
- (BOOL)BoolOf:(NSString *)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 · objc · JsonObject · BytesOf · method · since 9.5.0.68`

```objectivec
- (BOOL)BytesOf:(NSString *)jsonPath 
    encoding:(NSString *)encoding 
    bd:(CkoBinData *)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 YES for success, NO for failure.

### JsonObject.Clear

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

```objectivec
- (void)Clear;
```

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

### JsonObject.CopyRef

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

```objectivec
- (BOOL)CopyRef:(CkoJsonObject *)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 YES for success, NO for failure.

### JsonObject.DateOf

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

```objectivec
- (BOOL)DateOf:(NSString *)jsonPath 
    dateTime:(CkoDateTime *)dateTime;
```

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 YES for success, NO for failure.

### JsonObject.Delete

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

```objectivec
- (BOOL)Delete:(NSString *)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 YES for success, NO for failure.

### JsonObject.DeleteAt

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

```objectivec
- (BOOL)DeleteAt:(NSNumber *)index;
```

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

Returns YES for success, NO for failure.

### JsonObject.DeleteRecords

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

```objectivec
- (NSNumber *)DeleteRecords:(NSString *)arrayPath 
    relpath:(NSString *)relpath 
    value:(NSString *)value 
    caseSensitive:(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 · objc · JsonObject · DtOf · method · since 9.5.0.73`

```objectivec
- (BOOL)DtOf:(NSString *)jsonPath 
    bLocal:(BOOL)bLocal 
    dt:(CkoDtObj *)dt;
```

Parses the date/time value at `jsonPath` into `dt`. If `bLocal` is `YES`, 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 YES for success, NO for failure.

### JsonObject.Emit

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

```objectivec
- (NSString *)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 `nil` on failure

### JsonObject.EmitBd

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

```objectivec
- (BOOL)EmitBd:(CkoBinData *)bd;
```

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

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

Returns YES for success, NO for failure.

### JsonObject.EmitSb

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

```objectivec
- (BOOL)EmitSb:(CkoStringBuilder *)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 YES for success, NO for failure.

### JsonObject.EmitWithSubs

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

```objectivec
- (NSString *)EmitWithSubs:(CkoHashtable *)subs 
    omitEmpty:(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 `YES`, 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 `nil` on failure

### JsonObject.FindObjectWithMember

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

```objectivec
- (CkoJsonObject *)FindObjectWithMember:(NSString *)name;
```

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 · objc · JsonObject · FindObjectWithMember2 · method · since 11.0.0`

```objectivec
- (BOOL)FindObjectWithMember2:(NSString *)name 
    jsonObj:(CkoJsonObject *)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 `YES`.

Returns YES for success, NO for failure.

### JsonObject.FindRecord

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

```objectivec
- (CkoJsonObject *)FindRecord:(NSString *)arrayPath 
    relPath:(NSString *)relPath 
    value:(NSString *)value 
    caseSensitive:(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 `nil` on failure

### JsonObject.FindRecord2

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

```objectivec
- (BOOL)FindRecord2:(NSString *)arrayPath 
    relPath:(NSString *)relPath 
    value:(NSString *)value 
    caseSensitive:(BOOL)caseSensitive 
    jsonObj:(CkoJsonObject *)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 `YES`.

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

Returns YES for success, NO for failure.

### JsonObject.FindRecordString

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

```objectivec
- (NSString *)FindRecordString:(NSString *)arrayPath 
    relPath:(NSString *)relPath 
    value:(NSString *)value 
    caseSensitive:(BOOL)caseSensitive 
    retRelPath:(NSString *)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 `nil` on failure

### JsonObject.FirebaseApplyEvent

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

```objectivec
- (BOOL)FirebaseApplyEvent:(NSString *)name 
    data:(NSString *)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 YES for success, NO for failure.

### JsonObject.FirebasePatch

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

```objectivec
- (BOOL)FirebasePatch:(NSString *)jsonPath 
    jsonData:(NSString *)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 YES for success, NO for failure.

### JsonObject.FirebasePut

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

```objectivec
- (BOOL)FirebasePut:(NSString *)jsonPath 
    value:(NSString *)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 YES for success, NO for failure.

### JsonObject.GetDocRoot

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

```objectivec
- (CkoJsonObject *)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 `nil` on failure

### JsonObject.GetDocRoot2

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

```objectivec
- (BOOL)GetDocRoot2:(CkoJsonObject *)docRoot;
```

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

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

Returns YES for success, NO for failure.

### JsonObject.HasMember

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

```objectivec
- (BOOL)HasMember:(NSString *)jsonPath;
```

Returns `YES` if a value exists at `jsonPath`; otherwise returns `NO`.

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

Returns YES for success, NO for failure.

### JsonObject.IndexOf

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

```objectivec
- (NSNumber *)IndexOf:(NSString *)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 · objc · JsonObject · IntAt · method · since 9.5.0.56`

```objectivec
- (NSNumber *)IntAt:(NSNumber *)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 · objc · JsonObject · IntOf · method · since 9.5.0.56`

```objectivec
- (NSNumber *)IntOf:(NSString *)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 · objc · JsonObject · IsNullAt · method · since 9.5.0.56`

```objectivec
- (BOOL)IsNullAt:(NSNumber *)index;
```

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

### JsonObject.IsNullOf

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

```objectivec
- (BOOL)IsNullOf:(NSString *)jsonPath;
```

Returns `YES` if the value at `jsonPath` is the JSON literal `null`; otherwise returns `NO`.

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

```objectivec
- (NSNumber *)JsonTypeOf:(NSString *)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 · objc · JsonObject · Load · method · since 9.5.0.56`

```objectivec
- (BOOL)Load:(NSString *)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 YES for success, NO for failure.

### JsonObject.LoadBd

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

```objectivec
- (BOOL)LoadBd:(CkoBinData *)bd;
```

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

Returns YES for success, NO for failure.

### JsonObject.LoadFile

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

```objectivec
- (BOOL)LoadFile:(NSString *)path;
```

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

Returns YES for success, NO for failure.

### JsonObject.LoadPredefined

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

```objectivec
- (BOOL)LoadPredefined:(NSString *)name;
```

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

Returns YES for success, NO for failure.

### JsonObject.LoadSb

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

```objectivec
- (BOOL)LoadSb:(CkoStringBuilder *)sb;
```

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

Returns YES for success, NO for failure.

### JsonObject.MakeCopy

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

```objectivec
- (BOOL)MakeCopy:(CkoJsonObject *)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 YES for success, NO for failure.

### JsonObject.MoveMember

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

```objectivec
- (BOOL)MoveMember:(NSNumber *)fromIndex 
    toIndex:(NSNumber *)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 YES for success, NO for failure.

### JsonObject.NameAt

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

```objectivec
- (NSString *)NameAt:(NSNumber *)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 `nil` on failure

### JsonObject.NewArrayOf

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

```objectivec
- (BOOL)NewArrayOf:(NSString *)path 
    jArr:(NSString *)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 YES for success, NO for failure.

### JsonObject.NewObjectOf

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

```objectivec
- (BOOL)NewObjectOf:(NSString *)path 
    jObj:(NSString *)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 YES for success, NO for failure.

### JsonObject.ObjectAt

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

```objectivec
- (CkoJsonObject *)ObjectAt:(NSNumber *)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 `nil` on failure

### JsonObject.ObjectAt2

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

```objectivec
- (BOOL)ObjectAt2:(NSNumber *)index 
    jsonObj:(CkoJsonObject *)jsonObj;
```

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

Returns YES for success, NO for failure.

### JsonObject.ObjectOf

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

```objectivec
- (CkoJsonObject *)ObjectOf:(NSString *)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 `nil` on failure

### JsonObject.ObjectOf2

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

```objectivec
- (BOOL)ObjectOf2:(NSString *)jsonPath 
    jsonObj:(CkoJsonObject *)jsonObj;
```

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

Returns YES for success, NO for failure.

### JsonObject.Predefine

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

```objectivec
- (BOOL)Predefine:(NSString *)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 YES for success, NO for failure.

### JsonObject.Rename

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

```objectivec
- (BOOL)Rename:(NSString *)oldName 
    newName:(NSString *)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 YES for success, NO for failure.

### JsonObject.RenameAt

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

```objectivec
- (BOOL)RenameAt:(NSNumber *)index 
    name:(NSString *)name;
```

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

Returns YES for success, NO for failure.

### JsonObject.SetBoolAt

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

```objectivec
- (BOOL)SetBoolAt:(NSNumber *)index 
    value:(BOOL)value;
```

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

Returns YES for success, NO for failure.

### JsonObject.SetBoolOf

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

```objectivec
- (BOOL)SetBoolOf:(NSString *)jsonPath 
    value:(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 YES for success, NO for failure.

### JsonObject.SetIntAt

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

```objectivec
- (BOOL)SetIntAt:(NSNumber *)index 
    value:(NSNumber *)value;
```

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

Returns YES for success, NO for failure.

### JsonObject.SetIntOf

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

```objectivec
- (BOOL)SetIntOf:(NSString *)jsonPath 
    value:(NSNumber *)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 YES for success, NO for failure.

### JsonObject.SetNullAt

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

```objectivec
- (BOOL)SetNullAt:(NSNumber *)index;
```

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

Returns YES for success, NO for failure.

### JsonObject.SetNullOf

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

```objectivec
- (BOOL)SetNullOf:(NSString *)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 YES for success, NO for failure.

### JsonObject.SetNumberAt

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

```objectivec
- (BOOL)SetNumberAt:(NSNumber *)index 
    value:(NSString *)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 YES for success, NO for failure.

### JsonObject.SetNumberOf

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

```objectivec
- (BOOL)SetNumberOf:(NSString *)jsonPath 
    value:(NSString *)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 YES for success, NO for failure.

### JsonObject.SetStringAt

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

```objectivec
- (BOOL)SetStringAt:(NSNumber *)index 
    value:(NSString *)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 YES for success, NO for failure.

### JsonObject.SetStringOf

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

```objectivec
- (BOOL)SetStringOf:(NSString *)jsonPath 
    value:(NSString *)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 YES for success, NO for failure.

### JsonObject.SizeOfArray

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

```objectivec
- (NSNumber *)SizeOfArray:(NSString *)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 · objc · JsonObject · Sort · method · since 9.5.0.100`

```objectivec
- (void)Sort:(BOOL)ascending 
    caseSensitive:(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 · objc · JsonObject · StringAt · method · since 9.5.0.56`

```objectivec
- (NSString *)StringAt:(NSNumber *)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 `nil` on failure

### JsonObject.StringOf

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

```objectivec
- (NSString *)StringOf:(NSString *)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 `nil` on failure

### JsonObject.StringOfEquals

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

```objectivec
- (BOOL)StringOfEquals:(NSString *)jsonPath 
    value:(NSString *)value 
    caseSensitive:(BOOL)caseSensitive;
```

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

### JsonObject.StringOfSb

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

```objectivec
- (BOOL)StringOfSb:(NSString *)jsonPath 
    sb:(CkoStringBuilder *)sb;
```

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

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

Returns YES for success, NO for failure.

### JsonObject.Swap

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

```objectivec
- (BOOL)Swap:(NSNumber *)index1 
    index2:(NSNumber *)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 YES for success, NO for failure.

### JsonObject.TypeAt

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

```objectivec
- (NSNumber *)TypeAt:(NSNumber *)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 · objc · JsonObject · UIntOf · method · since 9.5.0.96`

```objectivec
- (NSNumber *)UIntOf:(NSString *)jsonPath;
```

Returns the unsigned integer value at `jsonPath`.

### JsonObject.UpdateBd

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

```objectivec
- (BOOL)UpdateBd:(NSString *)jsonPath 
    encoding:(NSString *)encoding 
    bd:(CkoBinData *)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 YES for success, NO for failure.

### JsonObject.UpdateBool

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

```objectivec
- (BOOL)UpdateBool:(NSString *)jsonPath 
    value:(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 YES for success, NO for failure.

### JsonObject.UpdateInt

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

```objectivec
- (BOOL)UpdateInt:(NSString *)jsonPath 
    value:(NSNumber *)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 YES for success, NO for failure.

### JsonObject.UpdateNewArray

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

```objectivec
- (BOOL)UpdateNewArray:(NSString *)jsonPath;
```

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

Returns YES for success, NO for failure.

### JsonObject.UpdateNewObject

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

```objectivec
- (BOOL)UpdateNewObject:(NSString *)jsonPath;
```

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

Returns YES for success, NO for failure.

### JsonObject.UpdateNull

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

```objectivec
- (BOOL)UpdateNull:(NSString *)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 YES for success, NO for failure.

### JsonObject.UpdateNumber

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

```objectivec
- (BOOL)UpdateNumber:(NSString *)jsonPath 
    numericStr:(NSString *)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 YES for success, NO for failure.

### JsonObject.UpdateSb

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

```objectivec
- (BOOL)UpdateSb:(NSString *)jsonPath 
    sb:(CkoStringBuilder *)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 YES for success, NO for failure.

### JsonObject.UpdateString

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

```objectivec
- (BOOL)UpdateString:(NSString *)jsonPath 
    value:(NSString *)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 YES for success, NO for failure.

### JsonObject.UpdateUInt

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

```objectivec
- (BOOL)UpdateUInt:(NSString *)jsonPath 
    value:(NSNumber *)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 YES for success, NO for failure.

### JsonObject.WriteFile

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

```objectivec
- (BOOL)WriteFile:(NSString *)path;
```

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

Returns YES for success, NO 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/objc/classes/BinData.md), [`CkDateTime`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/objc/classes/CkDateTime.md), [`DtObj`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/objc/classes/DtObj.md), [`Hashtable`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/objc/classes/Hashtable.md), [`JsonArray`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/objc/classes/JsonArray.md), [`StringBuilder`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/objc/classes/StringBuilder.md), [`StringTable`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/objc/classes/StringTable.md)

