Avatar billede Mik2000 Professor
16. januar 2013 - 00:00 Der er 4 kommentarer og
1 løsning

JSON udskriv indhold

Hej

Jeg skal hente nogle kontakter en API som benytter json, og skal have nogle værdier ud - alt understående er eksempeldata.

Jeg har fundet en masse tutorials med JSON som alle viser forskellige måder, og ingen virker.

Der er noget eksempelkode:
$method = "GET";
$resourceUrl = "ADRESSE_HVOR_DET_HENTES_FRA";
$apiKey = "KODE";
$c = curl_init($resourceUrl);
curl_setopt($c, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($c, CURLOPT_USERPWD, $apiKey . ":");
$rawResponse = curl_exec($c);
$response = json_decode($rawResponse);

ADRESSE_HVOR_DET_HENTES_FRA og KODE i ovenstående er udfyldt korrekt

Under mine spørgsmål er strukturen på det som skal ud

Så mit spørgsmål er:
1: Hvordan henter man en enkelt værdi ud - f.eks. fra nummer 1?
2: Hvordan looper man gennem og viser id og name fra alle?
3: Har du/I et godt sted hvor man kan læse mere om JSON og get, post, delete osv.?


{
    "contacts": [
        {
            "id": "70517-MXa4KUu9vY6uJ1",
            "contactNo": "",
            "createdTime": "2012-10-30T01:41:58+0000",
            "name": "Lilli Jeppesen",
            "street": "H.V. Rolsteds Vej 25A, 2. th.",
            "zipcode": "2800",
            "city": "Kongens Lyngby",
            "country": {
                "id": "DK",
                "name": "Denmark"
            },
            "state": "",
            "phone": "",
            "fax": "",
            "currency": null,
            "vatNo": "",
            "ean": "",
            "locale": null,
            "reminderScheme": null,
            "persons": [
            ]
        },
        {
            "id": "70518-YDUU3caxkYG1q6",
            "contactNo": "",
            "createdTime": "2012-10-30T01:41:58+0000",
            "name": "Mathias Bak",
            "street": "Hans Bogbinders All\u00e9 195A",
            "zipcode": "1909",
            "city": "Frederiksberg C",
            "country": {
                "id": "DK",
                "name": "Denmark"
            },
            "state": "",
            "phone": "",
            "fax": "",
            "currency": null,
            "vatNo": "",
            "ean": "",
            "locale": null,
            "reminderScheme": null,
            "persons": [
            ]
        }
}
    ],
    "paging": {
        "page": 1,
        "pageSize": 100,
        "pageCount": 1,
        "total": 3
    },
    "success": true
Avatar billede olebole Juniormester
16. januar 2013 - 01:48 #1
<ole>

Prøv at undersøge, hvad $response indeholder:

var_dump($response);

- så burde det være til at se, hvordan du tilgår de forskellige data. F.eks.:

echo $response->contacts[0]->id;[/b]
Loop:

[div]$arr = $response->contacts;
for ($i=0,$j=count($arr); $i<$j; $i++) {
    foreach($arr[$i] as $key => $val) {
        echo $key . ' = ' . $val . '<br>';
    }
}

Hvad er det mere præcist, du vil vide om hvad (punkt 3)?

/mvh
</bole>
Avatar billede arne_v Ekspert
16. januar 2013 - 01:50 #2
demo:

<?php
$rawresp = '{
    "contacts": [
        {
            "id": "70517-MXa4KUu9vY6uJ1",
            "contactNo": "",
            "createdTime": "2012-10-30T01:41:58+0000",
            "name": "Lilli Jeppesen",
            "street": "H.V. Rolsteds Vej 25A, 2. th.",
            "zipcode": "2800",
            "city": "Kongens Lyngby",
            "country": {
                "id": "DK",
                "name": "Denmark"
            },
            "state": "",
            "phone": "",
            "fax": "",
            "currency": null,
            "vatNo": "",
            "ean": "",
            "locale": null,
            "reminderScheme": null,
            "persons": [
            ]
        },
        {
            "id": "70518-YDUU3caxkYG1q6",
            "contactNo": "",
            "createdTime": "2012-10-30T01:41:58+0000",
            "name": "Mathias Bak",
            "street": "Hans Bogbinders All\u00e9 195A",
            "zipcode": "1909",
            "city": "Frederiksberg C",
            "country": {
                "id": "DK",
                "name": "Denmark"
            },
            "state": "",
            "phone": "",
            "fax": "",
            "currency": null,
            "vatNo": "",
            "ean": "",
            "locale": null,
            "reminderScheme": null,
            "persons": [
            ]
        }
    ],
    "paging": {
        "page": 1,
        "pageSize": 100,
        "pageCount": 1,
        "total": 3
    },
    "success": true
}';

$resp = json_decode($rawresp);
//print_r($resp);
echo $resp->contacts[0]->id . ' ' . $resp->contacts[0]->name . "\r\n";
foreach($resp->contacts as $contact) {
    echo $contact->id . ' '. $contact->name . "\r\n";
    }
?>
Avatar billede Mik2000 Professor
17. januar 2013 - 20:43 #4
Det ser ud til at virke. Mange tak.
Læg nogle svar og så er der point :)

Mange tak for hjælpen :)
Avatar billede arne_v Ekspert
18. januar 2013 - 00:07 #5
svar
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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