Avatar billede cthrane Praktikant
11. april 2012 - 15:16 Der er 8 kommentarer

parsing i php - json-lignende struktur

hvem har gode ideer til parsing af nedenstående i PHP
det er en json-lignende struktur:

{
    "1ed21ff2-a43b-4da5-8f8e-2be47fd6d255":  {
        "0":  {
            "file": "images\/afdelingerne\/lolland\/lolland3.gif",
            "title": "",
            "rel": ""
        }
    },
    "5893bbd8-a3ce-4049-b204-f32ca5aacec7":  {

    },
    "4e84d639-a4ea-4611-81a8-e7df052026c7":  {
        "0":  {
            "value": "<p>Vi skal en tur rundt i Nakskov Inerfjord med en lille afstikker til Lienlund.<\/p>\r\n<p>Naturen t\u00e6t ved Nakskov er b\u00e5de skov og vand og der er et rigt fugleliv,<\/p>"
        }
    },
    "75d4be0b-4587-4ae5-8133-d0531be2d7fe":  {
        "0":  {
            "value": "6 km"
        }
    },
    "586533f5-16c8-49a2-bb4d-b3422b52605d":  {
        "location": "Nakskov"
    },
    "a340551a-0b8c-439c-90ad-3398326dad31":  {
        "0":  {
            "value": "2012-07-25 16:00:00"
        }
    },
    "c044e819-282f-47cf-860a-35fa70729c2e":  {
        "0":  {
            "value": "Winchellsgade (ved Fugleskuplturen) 4900 Nakskov"
        }
    },
    "e434ef8a-fc48-4151-8357-138eb209becc":  {
        "location": "Winchellsgade, 4900 Nakskov"
    },
    "72637e8d-09c8-4216-973e-6a8c49d5f571":  {
        "0":  {
            "value": "2012-07-25 18:00:00"
        }
    },
    "fd59a0fc-ddb7-48cb-a954-4b34be06b30d":  {
        "0":  {
            "value": "Samme sted"
        }
    },
    "f50a6da5-2c02-4bf3-94b9-244c64baccd9":  {
        "0":  {
            "value": "10"
        }
    },
    "2ee315a8-af55-4d41-84d3-33fbdacf89e4":  {
        "0":  {
            "value": "10"
        }
    },
    "edf317e4-549a-447c-aa96-9cb8fe9bb743":  {
        "0":  {
            "value": "Erik Olsen"
        }
    },
    "efd1a814-bc50-4071-9f22-4e5dffdc2362":  {
        "0":  {
            "value": "5493 1364 \/ 2341 9268"
        }
    },
    "_staticcontent":  {

    }
}
Avatar billede erikjacobsen Ekspert
11. april 2012 - 19:21 #1
Du kan få det ud som et pænt array (med arrays indeni). Se: http://n0p.com/961052.php

Koden er:

<?php
$json='{
    "1ed21ff2-a43b-4da5-8f8e-2be47fd6d255":  {
        "0":  {
            "file": "images\/afdelingerne\/lolland\/lolland3.gif",
            "title": "",
            "rel": ""
        }
    },
    "5893bbd8-a3ce-4049-b204-f32ca5aacec7":  {

    },
    "4e84d639-a4ea-4611-81a8-e7df052026c7":  {
        "0":  {
            "value": "<p>Vi skal en tur rundt i Nakskov Inerfjord med en lille afstikker til Lienlund.<\/p>\r\n<p>Naturen t\u00e6t ved Nakskov er b\u00e5de skov og vand og der er et rigt fugleliv,<\/p>"
        }
    },
    "75d4be0b-4587-4ae5-8133-d0531be2d7fe":  {
        "0":  {
            "value": "6 km"
        }
    },
    "586533f5-16c8-49a2-bb4d-b3422b52605d":  {
        "location": "Nakskov"
    },
    "a340551a-0b8c-439c-90ad-3398326dad31":  {
        "0":  {
            "value": "2012-07-25 16:00:00"
        }
    },
    "c044e819-282f-47cf-860a-35fa70729c2e":  {
        "0":  {
            "value": "Winchellsgade (ved Fugleskuplturen) 4900 Nakskov"
        }
    },
    "e434ef8a-fc48-4151-8357-138eb209becc":  {
        "location": "Winchellsgade, 4900 Nakskov"
    },
    "72637e8d-09c8-4216-973e-6a8c49d5f571":  {
        "0":  {
            "value": "2012-07-25 18:00:00"
        }
    },
    "fd59a0fc-ddb7-48cb-a954-4b34be06b30d":  {
        "0":  {
            "value": "Samme sted"
        }
    },
    "f50a6da5-2c02-4bf3-94b9-244c64baccd9":  {
        "0":  {
            "value": "10"
        }
    },
    "2ee315a8-af55-4d41-84d3-33fbdacf89e4":  {
        "0":  {
            "value": "10"
        }
    },
    "edf317e4-549a-447c-aa96-9cb8fe9bb743":  {
        "0":  {
            "value": "Erik Olsen"
        }
    },
    "efd1a814-bc50-4071-9f22-4e5dffdc2362":  {
        "0":  {
            "value": "5493 1364 \/ 2341 9268"
        }
    },
    "_staticcontent":  {

    }
} ';

print "<pre>";
$o=json_decode($json,true);
var_dump($o);
print "</pre>";


?>
Avatar billede cthrane Praktikant
11. april 2012 - 20:36 #2
takker, men hvordan konvertere jeg det så jeg stort set kun får nedenstående resultat:

"<p>Vi skal en tur rundt i Nakskov Inerfjord med en lille afstikker til Lienlund.<\/p>\r\n<p>Naturen t\u00e6t ved Nakskov er b\u00e5de skov og vand og der er et rigt fugleliv,<\/p>"

"value": "6 km"
"location": "Nakskov"
"value": "2012-07-25 16:00:00"
"value": "Winchellsgade (ved Fugleskuplturen) 4900 Nakskov"
"value": "2012-07-25 18:00:00"
"value": "Samme sted"
"value": "10"
"value": "10"
"value": "Erik Olsen"
"value": "5493 1364 \/ 2341 9268"
Avatar billede erikjacobsen Ekspert
11. april 2012 - 21:29 #3
De der nøgler, fx "c044e819-282f-47cf-860a-35fa70729c2e" - er det de samme hver gang ud for samme slags information?
Avatar billede cthrane Praktikant
11. april 2012 - 21:31 #4
nej
Avatar billede erikjacobsen Ekspert
11. april 2012 - 21:45 #5
Mon de så kommer i samme rækkefølge hver gang?? Hvis de gør, kan du løbe igennem på denne måde, og tage dem du har brug for. Koden på linket ovenfor er ændret tilsvarende:

print "<pre>";
$o=json_decode($json,true);
var_dump($o);
print "</pre>";

$i=0;
foreach($o as $k=>$v) {
  $i++;
  print $i.": ".$v[0]["value"]."<br>";
}

?>
Avatar billede cthrane Praktikant
11. april 2012 - 21:54 #6
er k defineret?
Avatar billede cthrane Praktikant
11. april 2012 - 21:56 #7
supersejt det virker
Avatar billede erikjacobsen Ekspert
11. april 2012 - 21:57 #8
Ja, $k kan bruges. Jeg gør det så ikke, men nu er koden på linket ændret til:

print "<pre>";
$o=json_decode($json,true);
var_dump($o);
print "</pre>";

$i=0;
foreach($o as $k=>$v) {
  $i++;
  print $i." (".$k."): ".$v[0]["value"]."<br>";
}
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
Computerworld tilbyder specialiserede kurser i database-management

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