yeroc

yeroc

Extracting All Items of List Inside Map

Hello all!

A bit stumped on interpreting how to parse and extract my desired data from an API’s response with HTTPoison and Poison. I think I’m missing something simple.

Let’s say I want all the applicant names from “https://data.sfgov.org/resource/jjew-r69b.json?” .

In IEx-

iex(1)> res = HTTPoison.get!  "https://data.sfgov.org/resource/jjew-r69b.json?"

%HTTPoison.Response{
  body: "[{\"dayorder\":\"3\",\"dayofweekstr\":\"Wednesday\",\"starttime\":\"1PM\",\"endtime\":\"3PM\",\"permit\":\"19MFF-00079\",\"location\":\"1377 FELL ST\",\"locationdesc\":\"1:05pm-3:00pm\",\"optionaltext\":\"Cold Truck: Pre-packaged sandwiches, snacks, fruit, various beverages\"...

iex(2)> body = Poison.decode! res.body, keys: :atoms   

%{
    addr_date_create: "2017-07-31T15:11:15.000",
    addr_date_modified: "2017-08-01T10:49:12.000",
    applicant: "Bonito Poke",
    block: "3736",
    cnn: "107000",
    coldtruck: "N",
    dayofweekstr: "Wednesday",
    dayorder: "3",...

iex(3)> (hd body).applicant

"Liang Bai Ping"

As you can see from the JSON in the link, this is indeed the head, coming back to me in a string as I want after a bit of manipulation through HTTPoison and Poison. How would I go about calling and returning all of the heads and not just the head or tail?

Enum.map gives me nil

iex(4)> Enum.map(body, & &1["applicant"])
[nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
 nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
 nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
 nil, nil, ...]

Thanks for any help :slight_smile:

Marked As Solved

cloudytoday

cloudytoday

In your Poison.decode! call you’re specifying keys: :atoms which constructs the resulting maps’ keys as atoms and not strings, but in your map call you’re providing a function which retrieves the field as it was a string (& &1[“applicant”]). I would recommend removing the keys: :atoms from the Poison.decode! call. Alternatively, you can do the same but with & &1.applicant.

Also Liked

cloudytoday

cloudytoday

Oh I just meant that the alternative solution, if, for some reason, you really need them as atoms, would be to keep the keys: :atoms in the Poison call, and to just change the function in the Enum.map call so that it retrieves the atoms via map.atom_field syntax (it’s equivalent to some_map[:atom_key]). And if you don’t need them as atoms, then you can simply remove the keys: :atoms from the Poison call. :slight_smile:

yeroc

yeroc

Ah yes! Thanks for clarifying! :yellow_heart:

Where Next?

Popular in Questions Top

Tee
can someone please explain to me how Enum.reduce works with maps
New
bsollish-terakeet
Credo is smart enough to check for (something like) this: assert length(the_list) == 0 with this response: Checking if an enum is empt...
New
pgiesin
This should be a simple problem but I just can’t seem to figure it out. I have a standalone Elixir app that won’t find the database. Dep...
New
Harrisonl
We have an ECS cluster with 4 services, where each task joins a single cluster, via discovery ECS discovery service. Currently when I de...
New
Jim
As a follow up to my earlier question: I have the code compiling and running but not getting a successful login from the rest server. ...
New
lastday4you
I wanted to check elixir version in phoenix because i found that my elixir is 1.5 but when i use Enum.chunk_by it said the function is un...
New
freewebwithme
Using vs code and installed ElixirLS: support and debugger. And I got an error popped up on start up says Failed to run ‘elixir’ comma...
New
chensan
I have a User schema with a :from_id field set to type :string: defmodule TweetBot.Repo.Migrations.CreateUsers do use Ecto.Migration ...
New
LegitStack
I’m trying to make a websocket server in Phoenix or raw Elixir. I heard about gun, I think I could use cowboy, but since I’m not that sma...
New
baxterw3b
Hi guys, i’m new in the Elixir world, and i have to say, that i love it! i’m having some problem to understand anonymous functions with ...
New

Other popular topics Top

lessless
I believe there are people here who are dealing with CSV files import on the daily basis, and since Excel is a really popular tool there ...
New
New
quazar
How to set Jason to encode all fields in ecto schema, I don’t care about security and implementing only is taking long list of attributes...
New
lastday4you
I wanted to check elixir version in phoenix because i found that my elixir is 1.5 but when i use Enum.chunk_by it said the function is un...
New
vac
Hi, I'm quite new in Elixir and I'm trying to format a string to a PEM format. I have the certificate value like MIIDBTCCAe2...... and ...
New
minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
stefanluptak
Hello everybody, usually, I use a 29" ultra-wide monitor for VSCode which can easily accomodate explorer (files panel) + file with code ...
New
ovidiubadita
Hey all, I discovered Elixir and I love it. I always wanted to learn a functional programming and I intended to go for Haskell, but afte...
New
skosch
To my knowledge, put_in, Map.update etc. all have the one limitation of not automatically creating intermediate keys when needed (for exa...
New
joeerl
Hello again - after a longish gap I’ve decided I really must dig into Elixir and see what’s been happening here - so I have a few questio...
New

We're in Beta

About us Mission Statement