parseObject method

VlJson parseObject()

Implementation

VlJson parseObject() {
  VlJson v =  VlJson();
  v.kind = 5;
  i = i + 1;
  this.skipWs();
  if ( i < n ) {
    if ( s.codeUnitAt(i) == 125 ) {
      i = i + 1;
      return v;
    }
  }
  bool go = true;
  while (go) {
    this.skipWs();
    if ( i >= n ) {
      this.fail("unterminated object");
      go = false;
    } else {
      if ( s.codeUnitAt(i) != 34 ) {
        this.fail("expected string key in object");
        go = false;
      } else {
        String key = this.readRawString();
        this.skipWs();
        if ( i >= n ) {
          this.fail("expected ':' in object");
          go = false;
        } else {
          if ( s.codeUnitAt(i) != 58 ) {
            this.fail("expected ':' in object");
            go = false;
          } else {
            i = i + 1;
            VlJson val = this.parseValue();
            v.setMember(key, val);
            this.skipWs();
            if ( i >= n ) {
              this.fail("unterminated object");
              go = false;
            } else {
              int c = s.codeUnitAt(i);
              if ( c == 44 ) {
                i = i + 1;
              } else {
                if ( c == 125 ) {
                  i = i + 1;
                  go = false;
                } else {
                  this.fail("expected ',' or '}' in object");
                  go = false;
                }
              }
            }
          }
        }
      }
    }
    if ( ok == false ) {
      go = false;
    }
  }
  return v;
}