private static INode ReadNameValue(this Unpacker unpacker) { string name = unpacker.ReadQuoteString(); Node node = new Node(); node.Name = name; unpacker.SkipWhiteSpace(); if (unpacker.Read() != ':') { throw new FormatException("invalid json name:value format"); } unpacker.SkipWhiteSpace(); // json value char c = unpacker.Peek(); if (c == '{') { node.SubNode = unpacker.ReadObject(); } else if (c == '[') { node.SubNode = unpacker.ReadArray(); } else { node.Value = unpacker.ReadWritable(); //fully compartale with json } return(node); }