It doesn't pretty print, but is there anything wrong with this:

    using JSON
    json([[string(col)=> df[col][row] for col in names(df)] for row in 
1:nrow(df)])

Just to break it down, this part creates the dictionary for each row:
 
    [string(col)=> df[col][row] for col in names(df)]

and it's repeated over each row to create the array of Dicts.

and of course json() converts the array of dicts to valid json (which is 
not that hard to get wrong when done by hand).

On Monday, 9 November 2015 06:11:17 UTC+2, Eric Forgy wrote:
>
> Hi,
>
> I need to serialize a DataFrame to JSON. I have read this:
>
>    - https://github.com/JuliaStats/DataFrames.jl/issues/184
>    
> but my case is a little different.
>
> If my DataFrame looks like this:
>
> julia> df
> 8x2 DataFrames.DataFrame
> | Row | A | B   |
> |-----|---|-----|
> | 1   | 1 | "M" |
> | 2   | 2 | "F" |
> | 3   | 3 | "F" |
> | 4   | 4 | "M" |
> | 5   | 5 | "F" |
> | 6   | 6 | "M" |
> | 7   | 7 | "M" |
> | 8   | 8 | "F" |
>
>
> Then I need my JSON to look like this (in order to talk to another API):
>
> [
>
> {"A": 1, "B": "M"},
>
> {"A": 2, "B": "F"}, 
>
> {"A": 3, "B": "F"},
>
> {"A": 4, "B": "M"},
>
> {"A": 5, "B": "F"},
>
> {"A": 6, "B": "M"},
>
> {"A": 7, "B": "M"},
>
> {"A": 8, "B": "F"},
>
> ]
>
>
> In Matlab, I would create an array of "structs". In Julia, I'm thinking I 
> would need to dynamically create a type
>
> immutable row
>     A::Int
>     B::AbstractString
> end
>
>  
> based on the names in the DataFrame, which should be generic and not 
> confined to two. Then I would construct an array of "row"s and finally 
> using JSON.jl, serialize via JSON.json.
>
> Is there a better/easier way to do this?
>
> Thank you.
>

Reply via email to