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

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