linkedin malformed JSON alles tussen " " backspacen
Ik heb een API waarmee ik mijn linkedin Contacten in JSON formaat ophaal. Nu echter blijkt deze JSON niet door de online JSON validators goedgekeurt te worden als VALID RFC 4627 JSON. Ik probeer daarom de string welke eigenlijk mijn JSON-achtige Linkedin output zo aan te passen dat het wel voldoet aan de vereisten
zie hier een gedeelte van mijn Linkedin Callback output
"apiStandardProfileRequest": {
"headers": {
1,
"values": [{
"name": "x-li-auth-token",
"value": "name:3kHG"
}]
},
"url": "http://api.linkedin.com/v1/people/OOH6HSjgEc"
},
"firstName": "Maurice",
"headline": "Relations and Innovation Manager at SARA",
"id": "OOH6HSjgEc",
"industry": "Information Technology and Services",
"lastName": "Bouwhuis",
"location": {
"country": {"code": "nl"},
"name": "Amsterdam Area, Netherlands"
},
"pictureUrl": "http://m3.licdn.com/mpr/mprx/0_Dr__gR9jPn3w-tC2D-tKgMnxlc5WrNi27ABpgML7mllMfrquT9P71JlTxVLnPPGh21TgtOU_D-96",
"siteStandardProfileRequest": {"url": "http://www.
2000
linkedin.com/profile?viewProfile=&key=5589042&authToken=3kHG&authType=name&trk=api*a191244*s199365*"}
},
wat gebeurt is dat Linkedin her en der het getal 2000 op de begin van een nieuwe regel in haar JSON output dropt. nu ben ik natuurlijk niet zeker of het altijd het getal 2000 is maar om de JSON geschikt te maken voor PHP wil ik het getal 2000 in het gedeelte:
"http://www.
2000
linkedin.com/profile?viewProfile=&key=5589042&authToken=3kHG&authType=name&
trk=api*a191244*s199365*"
vervangen voor
"http://www.linkedin.com/profile?viewProfile=&key=5589042&authToken=3kHG&authType=name&trk=api*a191244*s199365*"
Ik wil dit in regex of een simpele methode doen dus zoeken naar digits op een nieuwe regel in mijn string (Lees lookalike JSON) en deze replacen voor backspace. weet iemand wat de truc hiervoor is
groeten van Malick
http://www.linkedin.com/profile?viewProfile=&key=
5589042&authToken=
3kHG&authType=name&trk=api*a191
244*s199
365*
en dan met 2000 ervoor:
http://www.linkedin.com/profile?viewProfile=&key=
20005589042&authToken=
20003kHG&authType=name&trk=api*a191
2000244*s199
2000365*
of wil je zeggen dat het getal 2000 ALLEEN voorkomt in de domein naam ??
www.2000linkedin.com -> www.linkedin.com
Misschien zou je eens moeten uitzoeken waar die 2000 vandaan komt en wat deze betekend
het getal 2000 komt op plaatsen voor waar men hem niet verwacht. Ik denk dat linkedin dit doet om de json data te beschermen tegen ongeoorloofd parsen naar databases. het getal maakt mijn json ook complex om mee verder te werken als ik het goed begrijp maakt json_decode altijd een array en de array vervolgens met regex weer aanpassen maakt het dan altijd weer een string. Hierdoor ben ik niet in staat om over de array meer te loopen...?
http://www.phphulp.nl/php/forum/topic/fsocket-voegt-2000-toe-aan-resutaat/86903/1/#622811
Moet nu zelf nog even kijken hoe er mee om te gaan.
succes