from static method

Data from(
  1. dynamic value, {
  2. String? root,
})

Implementation

static Data from(dynamic value, {String? root})
{
  Data? data;

  if (value is List)    data = Data(data: value);
  if (value is Data)    data = value;
  if (value is String)
  {
    if (value.trim().startsWith('<')) {
      data = Data.fromXml(value);
    } else
    {
      data = Data.fromJson(value);
    }
  }

  // default
  data ??= Data(data: data);

  // root should be supplied
  root ??= data.findRoot(root);

  // select sub-list
  if (root != null)
  {
    // convert root to dot notation
    DotNotation? dotnotation = DotNotation.fromString(root);

    // get sublist
    if (dotnotation != null) data = fromDotNotation(data, dotnotation);
  }

  return (data != null) ? data : Data(data: data);
}