---
title: OptimizelyJSON for the C# SDK
slug: feature-experimentation/docs/optimizelyjson-csharp
docTags: 
createdAt: 2026-08-05T20:40:00.000Z
---

Since static-typed languages lack native support for JSON, the C# SDK uses the OptimizelyJson object to retrieve JSON in a flexible way.

## Version

SDK v3.5 and higher

## Methods

You can access JSON representations with the following methods:

| Method           | Parameters          | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| ---------------- | ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \`ToString\`     | none                | Returns a string representation of the JSON object                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| \`ToDictionary\` | none                | Returns a dictionary representation of the JSON object: \`(Dictionary)\`                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| \`GetValue\`     | \`string jsonPath\` | Returns a specified schema object (\`T\`) with the key/value pair of the JSON key you pass to this method. If JSON key is null or empty, it populates your schema object with all JSON key/value pairs. You can retrieve information for a nested member of the JSON data structure by using flattened JSON dot notation.\ For example, if you want to access the key \`nestedField2\` in \`\{field1: \{nestedField2: "blah"}}\`, you can call \`GetValue\` with the parameter \`"field1.nestedField2"\`. |

The OptimizelyJson object is defined as follows:

```csharp
public class OptimizelyJson
{
    public string ToString();

    public Dictionary<string, object> ToDictionary();

    public T GetValue<T>(string jsonPath);
}
```

## Examples

You can use `OptimizelyJson`, to:

- Get a JSON string by calling  the `ToString` method, or
- Retrieve a specified schema from the `OptimizelyJson` object by calling the `GetValue` method.

The following  example shows how to use an OptimizelyJson object to populate a schema object you declare.

```csharp
//declare a schema object into which you want to unmarshal OptimizelyJson content:
public class ExampleSubObject
{
    public string? Field;
}

public class ExampleObject
{
    public int? Field1;
    public double? Field2;
    public string? Field3;
    public ExampleSubObject? Field4;
}

var datafileJsonString =
    "{\"field1\": 1, \"field2\": 2.0, \"field3\": \"3\", \"field4\": {\"field\": \"4\"}}";
var optimizelyJson =
    new OptimizelyJSON(datafileJsonString, new DefaultErrorHandler(), new DefaultLogger());

// Parse all json key/value pairs into your schema
var exampleObject = optimizelyJson.GetValue<ExampleObject>(null);

// Parse the specified key/value pair with an integer value 
int field1 = optimizelyJson.GetValue<int>("field1");

// Parse the specified key/value pair with a string value
var exampleSubObject = optimizelyJson.GetValue<ExampleSubObject>("field4");
```
