# Efficiently Read JSON and Create DataFrame

**URL:** <https://discourse.julialang.org/t/efficiently-read-json-and-create-dataframe/41087>\
**Category:** Performance\
**Tags:** json, dataframes\
**Created:** [June 9, 2020, 6:25pm UTC](https://discourse.julialang.org/t/efficiently-read-json-and-create-dataframe/41087 "2020-06-09T18:25:04Z")\
**Posts on this page:** 1\
**Showing post:** 24

<div class="post-metadata">

**Author:** ![JesperMartinsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jespermartinsson/32/34098_2.png) [@JesperMartinsson](https://discourse.julialang.org/u/JesperMartinsson)\
**Post date:** [April 2, 2025, 3:59pm UTC](https://discourse.julialang.org/t/efficiently-read-json-and-create-dataframe/41087/24 "2025-04-02T15:59:42Z")

</div>

I had a similar challenge. Perhaps you can use a sink function and maybe this thread may provide some help:

> [@JSON3 to mutable Dict{String,Any}](https://discourse.julialang.org/t/json3-to-mutable-dict-string-any/93443):
>
> I’m using JSON3 to parse an input that can be either a json or an array of json string. I want to convert the output of JSON3.read to either a mutable Dict{String,Any} or Array{Dict{String,Any}}, respectively. I see that copy(JSON3.read(...)) always returns keys as Symbol and not String. The only solution I have so far to return keys as String is to using a sink argument that is a union: JSON3.read(input,Union{Dict{String,Any},Array{Dict{String,Any}}}). Anyone know of a preferred way to do this…

---

_[View the full topic](https://discourse.julialang.org/t/efficiently-read-json-and-create-dataframe/41087)._
