description

# dartify method

Object? dartify()

Converts a JavaScript JSON-like value to the Dart equivalent if possible.

Effectively the inverse of NullableObjectUtilExtension.jsify, dartify takes a JavaScript JSON-like value and recursively converts it to a Dart object, doing the following:

- If the value is a string, number, boolean, `null`, `undefined`, `DataView` or a typed array, does the equivalent `toDart` operation if it exists and returns the result.
- If the value is a simple JS object (the protoype is either `null` or JS `Object`), creates and returns a `[Map]<Object?, Object?>` whose keys are the recursively converted keys obtained from `Object.keys` and its values are the associated values of the keys in the JS object.
- If the value is a JS `Array`, each item in it is recursively converted and added to a new `[List]<Object?>`, which is then returned.
- Otherwise, the conversion is undefined.

If the value contains a cycle, the behavior is undefined.

Note

Prefer using the specific conversion member like `toDart` if you know the JavaScript type as this method may perform many type-checks. You should generally call this method with values that only contain JSON-like values as the conversion may be platform- and compiler-specific otherwise.

## Implementation

    // TODO(srujzs): We likely need stronger tests for this method to ensure
    // consistency. We should also limit the accepted types in this API to avoid
    // confusion. Once the conversion for unrelated types is consistent across all
    // backends, we can update the documentation to say that the value is
    // internalized instead of the conversion being undefined.
    external Object? dartify();