►
From YouTube: .NET Design Review: JSON
Description
00:00:00 - Approved: Build a JsonDocument from an already positioned Utf8JsonReader https://github.com/dotnet/corefx/issues/36148#issuecomment-477696501
00:21:30 - Approved: Utf8JsonWriter and JsonElement, redux https://github.com/dotnet/corefx/issues/36153#issuecomment-477705735
A
B
B
B
B
C
Other
needs
have
come
up,
such
as
we've
seen
places
that
have
there
in
a
reader
loop
over
properties
and
then
one
thing
in
a
particular
property
they
want.
They
want
to
call
a
callback
right
now,
they're
using
the
J
token
API.
This
is
affected
by
the
equipment
of
the
JP
token
API.
So
this
is
when
you
want
to
move
your
control
from
the
reader
into
the
Dom,
without
figuring
out,
the
byte
range
that
you
were
operating
over
and
sending
those
bikes
pack
it
on
yourself
and.
C
So
it
reads
one
value:
if
you're
a
string,
a
true,
a
false,
a
null
or
a
number,
it
doesn't
move
the
reader.
If
you
are
a
start,
object
or
an
end
object,
sorry
start
object
or
a
start
array.
It
consumes
and
it
leaves
it
positioned
at
the
equivalent
in
if
you're,
a
property
name.
It
first
moves
forward
and
then
do
whatever
thing.
I
just
said,
and
if
you
haven't
ever,
if
you've
created
it
but
never
moved
it
at
all,
then
it
moves
your.
C
C
D
C
It
before
you
happen
to
me
again,
the
cases
we've
seen
for
this
is
that
somebody
has
effectively
a
switch
on
the
property
name
and
they
say.
Oh,
this
is
the
one
that
I
need
to
go
to
the
Dom
and
it
was
a
question
of
do
they
need
to
call
Reid
and
handle
the
false
or
or
just
give
it
to
us
in
that
state.
We'll
call
Reid
to
move
to
the
value
of
them.
So
so
then
the
property
case,
it's
assumed
you
already
knew-
was
that
a
property.
You
already
checked
the
property.
So
why
would.
B
We
not
basically
rename
the
matter
to
basically
and
ends
make
semantic
super
crisp.
You
have
to
be
positioned
at
the
beginning
of
a
value
and
then,
if
you
at
the
beginning
of
the
property,
you
have
to
first
read
it
on
the
reader
basic
consume
it,
and
then
because
then
we
can
lend
a
mat
of
cyrene
value
and
the
semantics
are
super
crazy
right
now
the
semantics
are
kind
of
you
have
to
explain
like
if
you
position
the
devalue.
It
reads:
the
value
returns
to
the
values
in
position
and
the
property
it
consumes.
C
Fine
with
the
asset,
a
song
is
the
one
who
so
I
started
with
that,
not
that
it
was
they
agreed
value,
but
I
started
with
the
you
have
to
you,
can't
be
in
a
property
name
and
a
son
showing
me
that
camp
the
cases
that
people
wanted.
This
convinced
me
that
they
don't
want
to
have
to
do
the
extra
call
to
read
and
deal
with
the
fact
that
it
could
return
false.
They
want
to
just
call
the
API
and
let
the
API
told
him
what
happened
it.
B
B
F
That
it
makes
more
sense
to
me
like
I
was
originally
suggesting.
Maybe
something
like
because
I
think
read
from
verses
part
seems
both
like
you
kind
of
have
to
read
the
fine
print.
I
was
thinking,
I
got
partial
parse
or
something
like
this,
but
I
actually
like
to
read
a
you
know.
Maybe
you
in
parts
video
yeah.
G
Part
of
the
problem
is
that
this
behaves
the
same
as
skip,
so
people
are
familiar
with
the
semantics
of
a
skip:
the
property
name
and
I'll
move
to
the
next
value.
What's
good
like
to
skip
one
reader,
if
you
wanna
skip
an
x
over,
it
skip
the
property
name
and
then
the
van.
So
this
one
is
skip
and
read
so.
C
A
I'm
skip
no
here
skip
obvious.
This
does
the
same
thing
as
skipped,
as
is
the
reader
is
at
the
end
of
the
what
we
called
what
we
were
talking
about
this
of
the
logical
value.
So
if
you're,
a
property
and
a
property
name,
the
logical
value
is
the
thing
that's
coming
next
and
if
you're
at
the
natural
value,
the
logical
value
is
the
same.
B
C
F
C
F
We
could
just
go
with
skip
value
and
we
do
them
and
it's
like.
Oh,
it
makes
a
decision
what
you
won't
even
do
it
or
not,
yeah
and
honestly,
at
that
point,
I
personally
wouldn't
care
whether
it's
good
to
puppet
a
name
or
not,
but
you
can
just
say
well,
if
you
call
we
debate,
you
know
on
the
property
like
what
we
just
skip
to
the
baby
or
neck.
That
seems
still
trying
to
me
like.
Why
do
you
wanna
call
it
a.
F
G
B
B
B
G
B
G
To
put
it
before
that
value,
but
does
that
add
more
confusion,
because
green
value
could
mean
just
primitive
Jason
values,
string,
number
bull,
ridin,
Ranger,
sorry,
Jason
value
and
object
is
adjacent
army,
but
we
call
it.
Some
value
has
been
over
here
just
element,
which
means
a
reader
element.
There
also
works.
It's
no
he's
got
a
good
Guardian
generic
right.
We
had
no
idea,
they
talk
about
values,
them
call.
It
element.
B
C
B
F
F
B
F
Yeah,
like
the
in
eczema,
the
naming
convention
is
pretty
consistent.
That
passing
is
only
context.
Load
is
always
from
something
that
you
advance
and
then
for
the
reader
like
they
call
it.
We
because
of
the
whole
leader
structures.
Again,
obviously
DVD
I
mean
you
could
go
with
load
or
we
could
just
go
ooh.
It's
close
enough
and
I
think
one
of
the
reasons
why
even
with
your
entomology
and
framework
is,
if
you
have
a
method
that
takes
a
string,
is
unclear
whether
that's
a
path
or
whether
that's
the
actual
content.
F
Ya
know
from
your
eye
or
from
you
know,
like
I,
mean
personally
I
I
think
we
should
just
pick
one
but
I,
don't
think
we
need
to
be
necessarily
consistent
of
XML
but
I
said
ultimate
epistle,
like
you
know,
let's
just
pick
a
convention
here
and
then
just
stick
to
that.
There's
a
bit
of
weird
to
have
both
on
the
same
type
that
we
do
it
for
sure.
C
C
C
C
C
F
F
B
F
B
This
one
is
now
I,
don't
know
this
convention
and
now
I
have
to
like
checking
intelligence
in
two
different
places,
whether
you
take
the
data
type
that
I
got.
You
know
I
chemistry,
okay,
which
method
should
I
use
to
place
it.
We
get
the
freaking
data
out
of
my
stream
and
in
to
digest
your
document
parts
Oh
No,
so
first
busy
18th
of
the
Paris,
is
not
consuming.
Okay,
somehow
that
each
I,
the
other
one
well.
F
F
B
F
B
C
F
C
So
the
only
places
with
Jason
right
now
that
uses
the
word
value
is
the
Dom.
It
has
an
enum
called.
The
reader
has
Jason
token
type
code
for
the
Dom.
We
add
adjacent
value
type
indicate
what
type
the
value
is.
So
that
does
give
the
notion
that
an
element
is
a
value.
Oh,
okay,
okay,
so
we
are
consistent
with.
C
A
G
C
C
C
J
I
C
So
once
the
writer
existed
and-
and
they
were
being
hooked
up-
that
it
was
felt
that
it
was
a
layering
inversion
to
have
to
write
and
understand
the
elements
and
that
the
element
should
understand
the
writer.
So
this
is
moving
those
right
methods
on
to
element
and
right
to
and
right
value
to,
are
sort
of
matching
the
right
and
right
value
or
matching
the
readers
definition
of
property
versus
not
a
property.
And
the
two
is
because
yeah
I
take
a
destination
in
a
bit
modified.
C
C
C
D
C
B
I
see
what
you're
saying
the
element
here
is,
the
funny
I
see
do
I
have
to
say:
I
was
looking
at
the
signature
of
this
method,
and
I
was
thinking
that
each
element
is
a
complex
object.
You
cannot
select
a
property
given
the
parameter
and
write
it
to
the
rider
tonight.
The
value
of
the
strategy
right.
B
It
writes
the
value
of
this
property
to
the
writer,
and
you
know
it's
not
really
any
search
it.
Doesn't
it
yeah?
It
was
not
that
it's
not
super.
That
was
not
super
active
to
me.
I,
don't
know
if
the
problem
that
other
people
don't
have.
What
do
we
want
to
solve
it
or
not?
But
it's
not
super
this
from
the
signature.
Okay
doesn't
matter
which
which,
which.
C
B
G
F
G
F
A
different
argument:
I
would
say
that
looking
at
the
API
is
it
would
really.
These
ABI
is
a
clearer
than
the
other
ones
and
I
think
I,
don't
know
layering
to
me
makes
sense
it
because
assembly
about
it
is
it
doesn't
make
any
sense
of
elements
anyway,
I
think
a
way
to
ship
them
is
individual
unit.
I.
K
Think
it
makes
sense
even
with
them
in
December,
because
it
allows
better
refactoring
later
without
breaking
things.
You
don't
less.
You
want
that
a
couple
of
these
components.
What
would
you
change
I
mean
like,
for
example,
stream
is
exists
in
the
same
assembly
as
everything
else
with
correlate,
but
we
wouldn't
want
to
immerse
the
layering
there
and
have
stream
have
intricate
knowledge
of
all
the
types.
B
But
I
mean
there
is
a
balance.
I
mean
I
I,
agree
with
you,
because
you
know
there
are
some
times
that
are
very
different
in
terms
of
whether
they
are
high
level
low
level.
For
example,
I
will
definitely
not
think
a
dependency
from
the
writer
to
the
serialize.
There
is
a
good
dependence,
but
despite
the
fact
that
they
are
in
the
same
assembly,
I
wonder
whether
the
DOM
and
the
writer
on
it
are
not
close
enough
that
we
would
treat
it
sweep
them
as
a
single
feature.
I
think
it's
the.
C
B
G
F
From
a
usability
standpoint,
if
we
really
really
care
about
the
layering,
it
might
make
the
next
up
to
nothing.
Usability
is
so
much
better
like
in
this.
So
critical,
read
code,
you
say,
writer,
dot,
Rypple
are
white
flour,
white
blood,
all
of
the
sudden,
its
baseline,
lemon
thought.
Wife
is
a
writer.
It's
like
what
happened.
It
makes
it
than
UV
code.
Okay,.
C
K
F
I'm
saying
the
Amana
limiters
that
actually
call
right
on
the
stream
became
calm
them
on
two
hands
effectively.
I
think
they.
If
you
look
at
the
normal
usability
of
every
writer
in
the
world,
you
call
writer
dog
right,
like
that's
how
everybody
that
the
world
works,
which
is
why,
if
you
care
about
layering,
so
I
did
the
same
thing.
When
I
have
my
own
data
structures
that
I
want
to
ride
to
a
text
writer
or
might.
A
F
Just
add
an
extension
method
where
that,
like
I,
can
edit
rule
II
call
wider
door
right
customer
because
it
just
reads
much
nicer.
So
if
we
care
a
lot
that
we
don't
want
to
have
his
API
some,
neither
great
than
this
and
an
extension
five
somewhere,
but
these
guys
live.
But
it
seems
very
inverted
to
go
to
the
element
and
say
write
yourself
over
here,
like
that's
just
not
only
well
your.
G
F
C
B
Also,
the
usability
argument,
this
weaker
I
have
to
say
because
I
mean
you:
don't
we
don't
shoot
for
usability
for
the
day,
something
reader
writer
that's
fair,
so,
but
there
I
think
we
are
in
this
particular
case.
I.
Don't
know
why
I
would
want
to
create
a
guideline
on
the
fly
and
I.
Don't
know
why
this
layering
thing
doesn't
bother
me
at
all.
G
C
C
D
C
K
B
G
Concern
that
is
going
to
be
anything
inconsistent,
formatting,
okay,
right
so
I,
yeah
I,
don't
know
it
that
be
surprising,
I
think
if
someone
was
right
minimized
and
the
payload
is
in
article
format
and
they'd
say:
okay,
I'm
not
I,
said
in
that
little
group.
What
do
they
get?
You
know
they
mean
like
if
the
payload
is.
G
C
Passage
of
DNA,
but
it
can
violate
a
lot
of
the
writer
right
now
by
default,
to
make
sure
that
everything
is
transportable
on
an
ascii
string
instead
of
a
utf-8
stream
and
the
element,
if
it
had.
If
utf-8
data
came
in
and
we
did,
the
blip,
it
would
write,
you
can
take
data
out,
which
means
that
your
writer,
without
you,
configuring
it
to
tell
it
utf-8,
is
actually
safe,
is
now
mixing
ascii
escaping
and
PTFE.
Well,.
C
Doesn't
know
what
has
really
it
doesn't
know
if
it
was
I
mean
it
knows
whether
something
was
escaped
or
not.
It
doesn't
pay
attention
to
whether
or
not
it
was
utf-8
or
asking
oh
just
utf-8
to
this
okay
kind
of
would
have
to
assume
you
see
a
thing,
but
at
which
point
it
has
to
call
the
escape
or
anyway,
which
one
it
has
to
do
a
total
bite
okok.
So
you.
D
G
B
F
C
Just
in
you
can
just
play
devil's
advocate
here:
we've
had
a
bunch
of
things
in
a
mess
correlated
framework
where
it's
like
sure.
It
makes
sense
that
these
things
we
want
to
talk
to
each
other
and
then,
when
we
move
decor,
we
went
man.
We
needed
to
drive
a
wedge
between
these
two
things,
because
they
really
made
no
sense
that
not
because
they
were
separate
teachers
yeah.
C
A
K
K
K
B
K
I
think
in
this
case
this
is
a
very
normal
pattern
for
splitting
dependencies
like
this,
so
that
you
don't
have
that
circular
dependency
and
it's
just
a
common
pattern.
It's
not
like
we're
saying
this
is
something
new
we
should
do
because
we
think
there's
a
problem
we're
instead
saying
this
is
a
common
pattern
that
people
do
to
answer
this
specific
thing:
I,
guess:
here's
the
easy
question.
C
Since,
since
you're
now
on,
a
team
fits
in
a
completely
separate
code
base
from
this,
if
you
had
a
custom
type
that
you
wanted
to
write,
are
you
going
to
write
an
extension
method
to
make
it
look
like
it's
right
thing
on
the
writer
or
you
gonna,
take
make
ready
right
to
that.
You
passed
the
writer
intake
if
I
could
what
time.
So
you
have
some
type
in
the
answer.
Sdk,
you
want
to
send
it
to
a
writer.
You
make
a
public
method
on
that
type.
B
G
Is
the
dish
never
knows
how
to
write
itself,
so
it
is
the
determination
if
the
material
medium,
that
is
natural
location
point
otherwise,
there's
a
core
smell
where
the
writer
is
reaching
into
the
internal
components
of
the
element
all
over
the
place.
I'll
give
you
a
limited
for
that
matter.
If
I'm.
B
B
G
B
G
B
You
had
the
J
token
okay,
here
you
take
some
writer
I
will
do
some
writers
for
maintenance
scenario,
users
who
don't
have
poker
objects
that
we
better
do
what
the
honest
suggests.
Let's
the
knowledge
number
to
this
type
was
originally
designed
an
impatient
to
be
very
low-level
type
for
performance,
oriented
scenario.
I,
don't
think
we
should
be
trying
to
make
it
now.
Oh
it's
there.
G
G
C
M
M
M
C
G
B
B
C
If,
if
we
do
that
like,
if
we,
if
we
make
it
like
dangerous
utf-8,
Jason
writer,
with
literally
no
validation
as
the
new
name
of
it,
then
then
I
would
agree,
and
we
should
rip
them
off
up
here
and
move
them
there
or
move
them
to
an
extension
method
or
something
that
like
gets
it
off
of
me.
I
would
prefer
today,
okay.
B
In
that
word
you,
if
we
don't
do
it,
let's,
let's
say
we
don't
do
it.
You
just
said
it
still
doesn't
change
the
fact
that
this
type
is
not
super
super
safe.
Again,
that's
Monday's,
meeting
I'm
saying
in
which
world
we're
gonna
end
up
in
a
situation
where
this
Jason
right
there
is
just
like
awesome
type
for
in
the
average
Jason
that
net
user,
who
wants
to
write
something.
G
B
G
G
B
G
A
B
G
C
C
My
clarity
can
clarity,
control
the
one
go
all
right,
so
Jason
document,
if
you
give
it
a
memory
of
bite
it
holds,
it
holds
the
memory
of
bite
instead
of
copying
the
membrane.
That's
why
it's
there
part
of
them
quiet,
slow
and
then
it
uses
a
ring
pool
for
the
database
structure.
That
has
the
fact
that
uses
a
rate
pool
is
why
it's
disposable
so
that
you
can
put
the
stuff
clear
and
put
stuff
back
in
the
pool.
C
It
also
has
modes
where,
if
you
give
it
things
that
it
has
to
convert,
because
it
currently
doesn't
understand
them
such
as
strings
that
it
uses
in
a
red
pool
to
hold
the
intermediate
copy,
there
are
notions
that
you
want
to
be
able
to
say.
I
need
this
to
now
live
longer
than
the
original,
using.
What's
going
to
move
me
to
a
different
kind
of
memory
model
and
we're
calling
that
detached,
which
is
you
want
to
detach
from
the
original
input
memory
detach
then
has
the
notion,
or
so
there
are
really
two
questions
with
detaches.
C
Are
you
trying
to
detach
from
the
array
pools
and
you
want
to
be
GC
back?
Are
you
trying
to
detach
from
the
original
input
memory,
and
this
has
created
the
notion-
this
has
created
a
slightly
confusing
thing
and
then
there
is
I,
have
an
element
and
I
want
to
just
pluck
this
element
out
of
the
document
and
forget
the
rest
of
the
document.
Let
it
get
this
post
but
hold
on
to
only
the
small
subsets.
B
G
C
L
C
It's
detached
and
using
array
pools.
That
means
it's
still
disposable,
so
it
copies
itself
into
memory
pools
again
and
gives
you
a
new
copy.
If
it's
detached
and
you
told
it
don't-
deserve
a
pools
and
you
all
right,
you
called
you
catch
on
a
thing.
That's
already
not
using
the
array
pool
it
returns
this.
You
have
pure
DC
semantics
and
there's
a.
C
B
C
B
F
We're
a
clone
make
sense
to
make
copy
would
also
make
sense.
To
me
I
mean
the
question
is
like
for
detached
right
like
if
you
take
a
copy,
it
would
imply,
you
always
copy.
Clone
kinda
implies
you
always
clone,
but
if
you
say,
if
it's
already
detached
should
just
give
you
back
to
this
pointer,
then
it's
you
know.
That's.