Avatar billede kristianrnielsen Juniormester
26. januar 2019 - 09:57 Der er 10 kommentarer og
1 løsning

JSON til PHP string

Kære Eksperter,

Jeg er ved at lave et script, så jeg kan få vist de seneste 10 mailouts via Mailchimp vist på min hjemmeside.

Jeg kan sagtens få API'en til at vende tilbage med den rigtige JSON data, men jeg kan simpelthen ikke få lavet de ønskede keys om til strings.

Eksempel kan ses her:
https://developer.mailchimp.com/documentation/mailchimp/reference/campaigns/#read-get_campaigns

Min nuværende kode ser ud som følger:
$camp_subject = $json->{'campaigns'}[0]->{'settings'}->{'subject_line'};
$camp_url = $json->{'campaigns'}[0]->{'archive_url'};

Hvis nogen kan pinpointe hvad jeg gør galt, vil det blive utroligt værdsat.

God weekend! :)
Kristian
Avatar billede jakobdo Ekspert
26. januar 2019 - 10:05 #1
Hej Kristian,
nu er det snart 100 år siden jeg sidst har leget med PHP, så der er nok sket en del siden.
Men jeg startede altid med at gøre følgende:

echo '<pre>;
var_dump(json_decode($json));
echo '</pre>';

Så kunne jeg danne mig et "nemt" overblik over de data jeg havde med at gøre.

Og så er det "bare" og tage den fra $json['KEY'] indtil du har de data du ønsker.
Håber det kan bruges.
Avatar billede kristianrnielsen Juniormester
26. januar 2019 - 10:31 #2
Hej Jakob,

Jeg har allerede brugt var_dump for at få informationen ud - det er dét med at få den ønskede data lavet til en string, som driller :-/

Men takker for inputtet :)
Avatar billede Slater Ekspert
26. januar 2019 - 11:06 #3
Jeg forstår ikke hvad du mener med "de ønskede keys/data om til strings". Hvilket format er de da i nu, og hvad er det for data?

Det du skriver i dit eksempel i spørgsmålet, f.eks. $json->campaigns[0]->archive_url; vil returnere en string.
Avatar billede kristianrnielsen Juniormester
26. januar 2019 - 11:26 #4
Ja, det burde de, men de returnere tomme strings, så jeg tænker at det er noget i "stien" jeg gør forkert - altså om der skal ændres et sted i "$json->campaigns[0]->archive_url;"
Avatar billede Slater Ekspert
26. januar 2019 - 12:00 #5
Jeg ved ikke hvad du gør forkert, for det virker fint. Jeg har lige testet med denne kode:
https://pastebin.com/pa0GPz4V

Og den outputter den korrekte streng.
Avatar billede kristianrnielsen Juniormester
26. januar 2019 - 12:43 #6
Ok, mystisk. Altså, du får URL'en ud som string, ved den kode jeg har postet?
Avatar billede jakobdo Ekspert
26. januar 2019 - 13:10 #7
Som jeg skrev tidligere.
Forsøg dig frem.
Start med at var_dump($data);

Er der data ?
Ja, så forsægt med at printe:

var_dump($data->campaigns);

osv...

Prøv lidt frem.
Enten finder du fejlen i din kode eller også opdager du strukturen er en smule anderledes end forventet.
Avatar billede Slater Ekspert
26. januar 2019 - 16:35 #8
#6: Prøv selv med den PHP-kode jeg postede.

Hvis den virker hos dig, så er der et problem i din kode. Sammenlign den med koden i pastebin.
Hvis den ikke virker, så er problemet et andet sted - måske får du ikke det data du forventer, eller måske er der noget galt med din PHP-installation.
Avatar billede kristianrnielsen Juniormester
26. januar 2019 - 19:41 #9
Sådan som jeg kopiere den fra PasteBin virker den.

Jeg får følgende tilbage, når jeg bruger var_dump, og der virker det ikke:

https://pastebin.com/ZSUTNdYr
Avatar billede kristianrnielsen Juniormester
27. januar 2019 - 13:20 #10
Problemet bestod åbenbart i at jeg havde "true" med i min JSON_decode... Jeg takker mange gange for jeres tid - det er værdsat!
Avatar billede jakobdo Ekspert
27. januar 2019 - 15:42 #11
Svært at gætte, når du ikke har den del med i din første post
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester