[API reference](https://evolu.dev/docs/api-reference) › [@evolu/common](https://evolu.dev/docs/api-reference/common) › [Eq](https://evolu.dev/docs/api-reference/common/Eq) › eqJsonValue

```ts
function eqJsonValue(a: JsonValue, b: JsonValue): boolean;
```

Defined in: [packages/common/src/Eq.ts:138](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/Eq.ts#L138)

Deeply compares two [JsonValue](https://evolu.dev/docs/api-reference/common/Type/variables/JsonValue) values for equality.

- Uses an iterative approach with a stack to handle large or deeply nested
  objects without risking stack overflow.
- Handles circular references with a WeakMap to prevent infinite loops.
- Unlike JSON.stringify, this function directly compares values, avoiding
  serialization overhead and leveraging short-circuit evaluation for faster
  failure on mismatched structures.

### Example

```ts
const obj1: Json = { name: "Alice", hobbies: ["reading", "hiking"] };
const obj2: Json = { name: "Alice", hobbies: ["reading", "hiking"] };
console.log(eqJson(obj1, obj2)); // true
```