Flatten array with OPENJSON: OPENJSON on a value that may not be an array? [ [1] ], vs [1]Find Ancestry From JSONHow to remove known elements from a JSON[] array in PostgreSQL?Can I find all JSON scalars in PostgreSQL 9.3?PostgreSql : flatten json array dataCan SQL Server 2016 validate JSON on insert?Working with JSON data MySQLImport poorly formatted CSV/JSON to SQL ServerList JSON array in MySQL as rowsDynamic conversion of long data to wide with multiple columnsIs the MySQL JSON data type bad for performance for data retrieval?Columnstore index for Key/Value Pair table on SQL Server
How to say "to make my heart sing"
How can I deal with a player trying to insert real-world mythology into my homebrew setting?
Book where the stars go black due to aliens stopping human observation collapsing quantum possibilities
Is "take care'n of" correct?
Should I intentionally omit previous work experience when applying for jobs?
How is angular momentum conserved for the orbiting body if the centripetal force disappears?
Parse source code of the RAPID robot-automation language
Keep milk (or milk alternative) for a day without a fridge
How were Martello towers supposed to work?
How to hide what's behind an object in a non destructive way / give it an "invisibility cloak"
Managing and organizing the massively increased number of classes after switching to SOLID?
Why isn't there research to build a standard lunar, or Martian mobility platform?
definition of "percentile"
Single word for "refusing to move to next activity unless present one is completed."
references on the empirical study on the practice of OR
Can I call 112 to check a police officer's identity in the Czech Republic?
Should disabled buttons give feedback when clicked?
Was I subtly told to resign?
How do Windows version numbers work?
Was the Ford Model T black because of the speed black paint dries?
What does "it kind of works out" mean?
How to find the shape parameters of of a beta distribution given the position of two quantiles?
How can I get a player to accept that they should stop trying to pull stunts without thinking them through first?
Maximum charterer insertion
Flatten array with OPENJSON: OPENJSON on a value that may not be an array? [ [1] ], vs [1]
Find Ancestry From JSONHow to remove known elements from a JSON[] array in PostgreSQL?Can I find all JSON scalars in PostgreSQL 9.3?PostgreSql : flatten json array dataCan SQL Server 2016 validate JSON on insert?Working with JSON data MySQLImport poorly formatted CSV/JSON to SQL ServerList JSON array in MySQL as rowsDynamic conversion of long data to wide with multiple columnsIs the MySQL JSON data type bad for performance for data retrieval?Columnstore index for Key/Value Pair table on SQL Server
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
Frequently in Javascript you'll have something like
[ 7,2, [6,7], 2,10 ]
How would you query that structure with OPENJSON
I would like this,
0, 7
1, 2
2, 6,
2, 7,
3, 2
4, 10
I'm having a hard time conditionally unwrapping that JSON array.
Sample Data
declare @ex nvarchar(max) = '[ 7,2, [6,7], 2,10 ]';
My attempt
Find my query here
SELECT *
FROM OPENJSON(@ex, '$') AS j1
This gets you to,
key value type
0 7 2
1 2 2
2 [6,7] 4
3 2 2
4 10 2
If I try to CROSS APPLY OPENJSON(j1."value", '$') AS j2;
, I get an error about the 7, the first non-array being an invalid array,
Msg 13609 Level 16 State 4 Line 4
JSON text is not properly formatted. Unexpected character '7' is found at position 0.
How do I use CROSS APPLY OPENJSON
to conditionally unwrap the rows that are arrays (type=4) while leaving alone non-arrays (in the above like type=2
)? I don't want that [6,7]
in there. I want two rows with key=2
that have values 6
, and 7
respectively.
sql-server json
add a comment |
Frequently in Javascript you'll have something like
[ 7,2, [6,7], 2,10 ]
How would you query that structure with OPENJSON
I would like this,
0, 7
1, 2
2, 6,
2, 7,
3, 2
4, 10
I'm having a hard time conditionally unwrapping that JSON array.
Sample Data
declare @ex nvarchar(max) = '[ 7,2, [6,7], 2,10 ]';
My attempt
Find my query here
SELECT *
FROM OPENJSON(@ex, '$') AS j1
This gets you to,
key value type
0 7 2
1 2 2
2 [6,7] 4
3 2 2
4 10 2
If I try to CROSS APPLY OPENJSON(j1."value", '$') AS j2;
, I get an error about the 7, the first non-array being an invalid array,
Msg 13609 Level 16 State 4 Line 4
JSON text is not properly formatted. Unexpected character '7' is found at position 0.
How do I use CROSS APPLY OPENJSON
to conditionally unwrap the rows that are arrays (type=4) while leaving alone non-arrays (in the above like type=2
)? I don't want that [6,7]
in there. I want two rows with key=2
that have values 6
, and 7
respectively.
sql-server json
add a comment |
Frequently in Javascript you'll have something like
[ 7,2, [6,7], 2,10 ]
How would you query that structure with OPENJSON
I would like this,
0, 7
1, 2
2, 6,
2, 7,
3, 2
4, 10
I'm having a hard time conditionally unwrapping that JSON array.
Sample Data
declare @ex nvarchar(max) = '[ 7,2, [6,7], 2,10 ]';
My attempt
Find my query here
SELECT *
FROM OPENJSON(@ex, '$') AS j1
This gets you to,
key value type
0 7 2
1 2 2
2 [6,7] 4
3 2 2
4 10 2
If I try to CROSS APPLY OPENJSON(j1."value", '$') AS j2;
, I get an error about the 7, the first non-array being an invalid array,
Msg 13609 Level 16 State 4 Line 4
JSON text is not properly formatted. Unexpected character '7' is found at position 0.
How do I use CROSS APPLY OPENJSON
to conditionally unwrap the rows that are arrays (type=4) while leaving alone non-arrays (in the above like type=2
)? I don't want that [6,7]
in there. I want two rows with key=2
that have values 6
, and 7
respectively.
sql-server json
Frequently in Javascript you'll have something like
[ 7,2, [6,7], 2,10 ]
How would you query that structure with OPENJSON
I would like this,
0, 7
1, 2
2, 6,
2, 7,
3, 2
4, 10
I'm having a hard time conditionally unwrapping that JSON array.
Sample Data
declare @ex nvarchar(max) = '[ 7,2, [6,7], 2,10 ]';
My attempt
Find my query here
SELECT *
FROM OPENJSON(@ex, '$') AS j1
This gets you to,
key value type
0 7 2
1 2 2
2 [6,7] 4
3 2 2
4 10 2
If I try to CROSS APPLY OPENJSON(j1."value", '$') AS j2;
, I get an error about the 7, the first non-array being an invalid array,
Msg 13609 Level 16 State 4 Line 4
JSON text is not properly formatted. Unexpected character '7' is found at position 0.
How do I use CROSS APPLY OPENJSON
to conditionally unwrap the rows that are arrays (type=4) while leaving alone non-arrays (in the above like type=2
)? I don't want that [6,7]
in there. I want two rows with key=2
that have values 6
, and 7
respectively.
sql-server json
sql-server json
edited 8 hours ago
Evan Carroll
asked 9 hours ago
Evan CarrollEvan Carroll
34.7k11 gold badges89 silver badges256 bronze badges
34.7k11 gold badges89 silver badges256 bronze badges
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
If you are strictly confident that your nested arrays will never go deeper than N levels, you can completely unwrap the array-of-arrays with N uses of APPLY
. If you need to handle for arbitrary nesting levels, you can unwrap the array-of-arrays recursively using something like the following, which will produce output similar to the following
|----|-------|---------|-----|-------|------|
| id | level | path | key | value | type |
|----|-------|---------|-----|-------|------|
| 1 | 1 | /0 | 0 | 7 | 2 |
| 1 | 1 | /1 | 1 | 2 | 2 |
| 1 | 2 | /2/0 | 0 | 6 | 2 |
| 1 | 2 | /2/1 | 1 | 7 | 2 |
| 1 | 1 | /3 | 3 | 2 | 2 |
| 1 | 1 | /4 | 4 | 10 | 2 |
|----|-------|---------|-----|-------|------|
DB Fiddle
declare @ex table (
i int identity primary key,
r nvarchar(max)
);
insert @ex (r)
values ('[ 7,2, [6,7], 2, 10 ]')
,('[ 7,2, [6,7], 2, 10 , [6,[7,8]]]')
;
with j as (
select
x.i as id,
convert(int,1) as [level],
convert(nvarchar(max),N'/')+convert(nvarchar(max),a.[key]) as [path],
a.[key],
a.[value],
a.[type]
from @ex x
cross apply openjson(x.r) a
union all
select
j. id,
j.[level] + 1,
j.[path] + convert(nvarchar(max),N'/')+convert(nvarchar(max),a.[key]),
a.[key],
a.[value],
a.[type]
from j
cross apply openjson(j.value) a
where j.type in (4,5)
and j.level < 50 --maxrecursion
)
select *
from j
where type not in (4,5)
order by id, [path];
Testing against the 2-level deep nested array from the above example produces the following:
|----|-------|---------|-----|-------|------|
| id | level | path | key | value | type |
|----|-------|---------|-----|-------|------|
| 2 | 1 | /0 | 0 | 7 | 2 |
| 2 | 1 | /1 | 1 | 2 | 2 |
| 2 | 2 | /2/0 | 0 | 6 | 2 |
| 2 | 2 | /2/1 | 1 | 7 | 2 |
| 2 | 1 | /3 | 3 | 2 | 2 |
| 2 | 1 | /4 | 4 | 10 | 2 |
| 2 | 2 | /5/0 | 0 | 6 | 2 |
| 2 | 3 | /5/1/0 | 0 | 7 | 2 |
| 2 | 3 | /5/1/1 | 1 | 8 | 2 |
|----|-------|---------|-----|-------|------|
See this question also for related material.
add a comment |
declare @ex nvarchar(max) = '[ 7,2, [6,7], 2, 10 ]';
;WITH cte
AS (
SELECT *
FROM OPENJSON(@ex, '$') AS j1
)
SELECT c.[key], ISNULL(v.value, c.value)
FROM cte c
OUTER APPLY (
SELECT *
FROM OPENJSON(c.value, '$') AS j1
WHERE c.[type] = 4
)v
;
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "182"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdba.stackexchange.com%2fquestions%2f242662%2fflatten-array-with-openjson-openjson-on-a-value-that-may-not-be-an-array-1%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
If you are strictly confident that your nested arrays will never go deeper than N levels, you can completely unwrap the array-of-arrays with N uses of APPLY
. If you need to handle for arbitrary nesting levels, you can unwrap the array-of-arrays recursively using something like the following, which will produce output similar to the following
|----|-------|---------|-----|-------|------|
| id | level | path | key | value | type |
|----|-------|---------|-----|-------|------|
| 1 | 1 | /0 | 0 | 7 | 2 |
| 1 | 1 | /1 | 1 | 2 | 2 |
| 1 | 2 | /2/0 | 0 | 6 | 2 |
| 1 | 2 | /2/1 | 1 | 7 | 2 |
| 1 | 1 | /3 | 3 | 2 | 2 |
| 1 | 1 | /4 | 4 | 10 | 2 |
|----|-------|---------|-----|-------|------|
DB Fiddle
declare @ex table (
i int identity primary key,
r nvarchar(max)
);
insert @ex (r)
values ('[ 7,2, [6,7], 2, 10 ]')
,('[ 7,2, [6,7], 2, 10 , [6,[7,8]]]')
;
with j as (
select
x.i as id,
convert(int,1) as [level],
convert(nvarchar(max),N'/')+convert(nvarchar(max),a.[key]) as [path],
a.[key],
a.[value],
a.[type]
from @ex x
cross apply openjson(x.r) a
union all
select
j. id,
j.[level] + 1,
j.[path] + convert(nvarchar(max),N'/')+convert(nvarchar(max),a.[key]),
a.[key],
a.[value],
a.[type]
from j
cross apply openjson(j.value) a
where j.type in (4,5)
and j.level < 50 --maxrecursion
)
select *
from j
where type not in (4,5)
order by id, [path];
Testing against the 2-level deep nested array from the above example produces the following:
|----|-------|---------|-----|-------|------|
| id | level | path | key | value | type |
|----|-------|---------|-----|-------|------|
| 2 | 1 | /0 | 0 | 7 | 2 |
| 2 | 1 | /1 | 1 | 2 | 2 |
| 2 | 2 | /2/0 | 0 | 6 | 2 |
| 2 | 2 | /2/1 | 1 | 7 | 2 |
| 2 | 1 | /3 | 3 | 2 | 2 |
| 2 | 1 | /4 | 4 | 10 | 2 |
| 2 | 2 | /5/0 | 0 | 6 | 2 |
| 2 | 3 | /5/1/0 | 0 | 7 | 2 |
| 2 | 3 | /5/1/1 | 1 | 8 | 2 |
|----|-------|---------|-----|-------|------|
See this question also for related material.
add a comment |
If you are strictly confident that your nested arrays will never go deeper than N levels, you can completely unwrap the array-of-arrays with N uses of APPLY
. If you need to handle for arbitrary nesting levels, you can unwrap the array-of-arrays recursively using something like the following, which will produce output similar to the following
|----|-------|---------|-----|-------|------|
| id | level | path | key | value | type |
|----|-------|---------|-----|-------|------|
| 1 | 1 | /0 | 0 | 7 | 2 |
| 1 | 1 | /1 | 1 | 2 | 2 |
| 1 | 2 | /2/0 | 0 | 6 | 2 |
| 1 | 2 | /2/1 | 1 | 7 | 2 |
| 1 | 1 | /3 | 3 | 2 | 2 |
| 1 | 1 | /4 | 4 | 10 | 2 |
|----|-------|---------|-----|-------|------|
DB Fiddle
declare @ex table (
i int identity primary key,
r nvarchar(max)
);
insert @ex (r)
values ('[ 7,2, [6,7], 2, 10 ]')
,('[ 7,2, [6,7], 2, 10 , [6,[7,8]]]')
;
with j as (
select
x.i as id,
convert(int,1) as [level],
convert(nvarchar(max),N'/')+convert(nvarchar(max),a.[key]) as [path],
a.[key],
a.[value],
a.[type]
from @ex x
cross apply openjson(x.r) a
union all
select
j. id,
j.[level] + 1,
j.[path] + convert(nvarchar(max),N'/')+convert(nvarchar(max),a.[key]),
a.[key],
a.[value],
a.[type]
from j
cross apply openjson(j.value) a
where j.type in (4,5)
and j.level < 50 --maxrecursion
)
select *
from j
where type not in (4,5)
order by id, [path];
Testing against the 2-level deep nested array from the above example produces the following:
|----|-------|---------|-----|-------|------|
| id | level | path | key | value | type |
|----|-------|---------|-----|-------|------|
| 2 | 1 | /0 | 0 | 7 | 2 |
| 2 | 1 | /1 | 1 | 2 | 2 |
| 2 | 2 | /2/0 | 0 | 6 | 2 |
| 2 | 2 | /2/1 | 1 | 7 | 2 |
| 2 | 1 | /3 | 3 | 2 | 2 |
| 2 | 1 | /4 | 4 | 10 | 2 |
| 2 | 2 | /5/0 | 0 | 6 | 2 |
| 2 | 3 | /5/1/0 | 0 | 7 | 2 |
| 2 | 3 | /5/1/1 | 1 | 8 | 2 |
|----|-------|---------|-----|-------|------|
See this question also for related material.
add a comment |
If you are strictly confident that your nested arrays will never go deeper than N levels, you can completely unwrap the array-of-arrays with N uses of APPLY
. If you need to handle for arbitrary nesting levels, you can unwrap the array-of-arrays recursively using something like the following, which will produce output similar to the following
|----|-------|---------|-----|-------|------|
| id | level | path | key | value | type |
|----|-------|---------|-----|-------|------|
| 1 | 1 | /0 | 0 | 7 | 2 |
| 1 | 1 | /1 | 1 | 2 | 2 |
| 1 | 2 | /2/0 | 0 | 6 | 2 |
| 1 | 2 | /2/1 | 1 | 7 | 2 |
| 1 | 1 | /3 | 3 | 2 | 2 |
| 1 | 1 | /4 | 4 | 10 | 2 |
|----|-------|---------|-----|-------|------|
DB Fiddle
declare @ex table (
i int identity primary key,
r nvarchar(max)
);
insert @ex (r)
values ('[ 7,2, [6,7], 2, 10 ]')
,('[ 7,2, [6,7], 2, 10 , [6,[7,8]]]')
;
with j as (
select
x.i as id,
convert(int,1) as [level],
convert(nvarchar(max),N'/')+convert(nvarchar(max),a.[key]) as [path],
a.[key],
a.[value],
a.[type]
from @ex x
cross apply openjson(x.r) a
union all
select
j. id,
j.[level] + 1,
j.[path] + convert(nvarchar(max),N'/')+convert(nvarchar(max),a.[key]),
a.[key],
a.[value],
a.[type]
from j
cross apply openjson(j.value) a
where j.type in (4,5)
and j.level < 50 --maxrecursion
)
select *
from j
where type not in (4,5)
order by id, [path];
Testing against the 2-level deep nested array from the above example produces the following:
|----|-------|---------|-----|-------|------|
| id | level | path | key | value | type |
|----|-------|---------|-----|-------|------|
| 2 | 1 | /0 | 0 | 7 | 2 |
| 2 | 1 | /1 | 1 | 2 | 2 |
| 2 | 2 | /2/0 | 0 | 6 | 2 |
| 2 | 2 | /2/1 | 1 | 7 | 2 |
| 2 | 1 | /3 | 3 | 2 | 2 |
| 2 | 1 | /4 | 4 | 10 | 2 |
| 2 | 2 | /5/0 | 0 | 6 | 2 |
| 2 | 3 | /5/1/0 | 0 | 7 | 2 |
| 2 | 3 | /5/1/1 | 1 | 8 | 2 |
|----|-------|---------|-----|-------|------|
See this question also for related material.
If you are strictly confident that your nested arrays will never go deeper than N levels, you can completely unwrap the array-of-arrays with N uses of APPLY
. If you need to handle for arbitrary nesting levels, you can unwrap the array-of-arrays recursively using something like the following, which will produce output similar to the following
|----|-------|---------|-----|-------|------|
| id | level | path | key | value | type |
|----|-------|---------|-----|-------|------|
| 1 | 1 | /0 | 0 | 7 | 2 |
| 1 | 1 | /1 | 1 | 2 | 2 |
| 1 | 2 | /2/0 | 0 | 6 | 2 |
| 1 | 2 | /2/1 | 1 | 7 | 2 |
| 1 | 1 | /3 | 3 | 2 | 2 |
| 1 | 1 | /4 | 4 | 10 | 2 |
|----|-------|---------|-----|-------|------|
DB Fiddle
declare @ex table (
i int identity primary key,
r nvarchar(max)
);
insert @ex (r)
values ('[ 7,2, [6,7], 2, 10 ]')
,('[ 7,2, [6,7], 2, 10 , [6,[7,8]]]')
;
with j as (
select
x.i as id,
convert(int,1) as [level],
convert(nvarchar(max),N'/')+convert(nvarchar(max),a.[key]) as [path],
a.[key],
a.[value],
a.[type]
from @ex x
cross apply openjson(x.r) a
union all
select
j. id,
j.[level] + 1,
j.[path] + convert(nvarchar(max),N'/')+convert(nvarchar(max),a.[key]),
a.[key],
a.[value],
a.[type]
from j
cross apply openjson(j.value) a
where j.type in (4,5)
and j.level < 50 --maxrecursion
)
select *
from j
where type not in (4,5)
order by id, [path];
Testing against the 2-level deep nested array from the above example produces the following:
|----|-------|---------|-----|-------|------|
| id | level | path | key | value | type |
|----|-------|---------|-----|-------|------|
| 2 | 1 | /0 | 0 | 7 | 2 |
| 2 | 1 | /1 | 1 | 2 | 2 |
| 2 | 2 | /2/0 | 0 | 6 | 2 |
| 2 | 2 | /2/1 | 1 | 7 | 2 |
| 2 | 1 | /3 | 3 | 2 | 2 |
| 2 | 1 | /4 | 4 | 10 | 2 |
| 2 | 2 | /5/0 | 0 | 6 | 2 |
| 2 | 3 | /5/1/0 | 0 | 7 | 2 |
| 2 | 3 | /5/1/1 | 1 | 8 | 2 |
|----|-------|---------|-----|-------|------|
See this question also for related material.
edited 7 hours ago
answered 8 hours ago
Peter VandivierPeter Vandivier
1,7461 gold badge9 silver badges23 bronze badges
1,7461 gold badge9 silver badges23 bronze badges
add a comment |
add a comment |
declare @ex nvarchar(max) = '[ 7,2, [6,7], 2, 10 ]';
;WITH cte
AS (
SELECT *
FROM OPENJSON(@ex, '$') AS j1
)
SELECT c.[key], ISNULL(v.value, c.value)
FROM cte c
OUTER APPLY (
SELECT *
FROM OPENJSON(c.value, '$') AS j1
WHERE c.[type] = 4
)v
;
add a comment |
declare @ex nvarchar(max) = '[ 7,2, [6,7], 2, 10 ]';
;WITH cte
AS (
SELECT *
FROM OPENJSON(@ex, '$') AS j1
)
SELECT c.[key], ISNULL(v.value, c.value)
FROM cte c
OUTER APPLY (
SELECT *
FROM OPENJSON(c.value, '$') AS j1
WHERE c.[type] = 4
)v
;
add a comment |
declare @ex nvarchar(max) = '[ 7,2, [6,7], 2, 10 ]';
;WITH cte
AS (
SELECT *
FROM OPENJSON(@ex, '$') AS j1
)
SELECT c.[key], ISNULL(v.value, c.value)
FROM cte c
OUTER APPLY (
SELECT *
FROM OPENJSON(c.value, '$') AS j1
WHERE c.[type] = 4
)v
;
declare @ex nvarchar(max) = '[ 7,2, [6,7], 2, 10 ]';
;WITH cte
AS (
SELECT *
FROM OPENJSON(@ex, '$') AS j1
)
SELECT c.[key], ISNULL(v.value, c.value)
FROM cte c
OUTER APPLY (
SELECT *
FROM OPENJSON(c.value, '$') AS j1
WHERE c.[type] = 4
)v
;
answered 8 hours ago
Denis RubashkinDenis Rubashkin
9131 silver badge9 bronze badges
9131 silver badge9 bronze badges
add a comment |
add a comment |
Thanks for contributing an answer to Database Administrators Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdba.stackexchange.com%2fquestions%2f242662%2fflatten-array-with-openjson-openjson-on-a-value-that-may-not-be-an-array-1%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown