![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 17.01.2014 Ostrzeżenie: (0%) ![]() ![]() |
Problem wygląda następująco:
za pomocą metody json_decode() chcę przetworzyć stringa np. tej postaci: Cytat [ { "name": "Adam", "age": "28", "projects": [ "Shop", "Website", "Facebook" ] }, { "name": "Mark", "age": "23", "projects": [ "Website", "Facebook" ] }, { "name": "Anna", "age": "24", "projects": [ "Facebook" ] } ] przykładowy kod wygląda tak:
problem w tym, że $dane zawsze są = "NONE", dodam, że kodowanie wczytywanych do $stringzjsonem danych to utf-8 dobrze by było gdyby ktoś mnie chociaż naprowadził co jest nie tak? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
przykład:
http://ideone.com/fuAn6U Generalnie chodzi o to że musisz porównać do czegoś dane bo 1 wartość to jest warunek wiec albo nie rób tego tak albo spróbuj na zasadzie z przykładu (IMG:style_emoticons/default/wink.gif) Ten post edytował com 17.01.2014, 22:46:06 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 17.01.2014 Ostrzeżenie: (0%) ![]() ![]() |
@COM dzięki za wychwycenie błędu ;D faktycznie podstawowa pomyłka, ale akurat nie to jest istotą mojego wpisu.
Chodzi o to,że wykorzystanie metody json_decode() nawet w takiej postaci jak poniżej: zawsze zwraca $dane=NULL. dodam, że $stringzjsonem ładuję za pomocą file_get_contents($plik) i chyba coś jest nie tak z tym stringiem chociaż samo kodowanie pliku jest utf-8, to jednak te same dane podstawione wprost do zmiennej - działają, tj.zwracają wartość - a po załadowaniu z pliku już nie ;-/ Ten post edytował inshua 18.01.2014, 11:26:15 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 292 Pomógł: 89 Dołączył: 27.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Czyli jak zrobisz tak:
$dane = file_get_contents($plik_z_danymi); to $dane będą miały wartość FALSE? Masz włączone wyświetlanie komunikatów (włącznie z E_WARNING i E_NOTICE)? |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 17.01.2014 Ostrzeżenie: (0%) ![]() ![]() |
@vonski
nie, sama metoda $stringzjsonem=file_get_contents($plik) zwraca, w tym przypadku, coś takiego: Cytat $stringzjsonem=' [ { "name": "Adam", "age": "28", "projects": [ "Shop", "Website", "Facebook" ] }, { "name": "Mark", "age": "23", "projects": [ "Website", "Facebook" ] }, { "name": "Anna", "age": "24", "projects": [ "Facebook" ] } ]' natomiast po podstawieniu $dane=json_decode($stringzjsonem,true,512) $dane są pustym stringiem ;-/ mam włączone E_ALL |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 292 Pomógł: 89 Dołączył: 27.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 321 Pomógł: 55 Dołączył: 19.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
@inshua może to głupie pytanie ... ale zwartością twojego pliku nie jest dokładnie to co zacytowałeś tylko to poniżej ?
Kod [ { "name": "Adam", "age": "28", "projects": [ "Shop", "Website", "Facebook" ] }, { "name": "Mark", "age": "23", "projects": [ "Website", "Facebook" ] }, { "name": "Anna", "age": "24", "projects": [ "Facebook" ] } ]
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 17.01.2014 Ostrzeżenie: (0%) ![]() ![]() |
@vonski
-plik jest w utf-8 z BOM jak mi pokazuje notepad++ -mb_detect_encoding() zwraca 'UTF-8' -json_last_error() zwraca code: 4 = 'JSON_ERROR_SYNTAX' czyli malformed JSON @ctom pytanie dobre bo być może na tym cała sprawa się zasadza, otóż w pliku mam to samo co podstawiam pod zmienną jako stringa, czyli jeżeli dam jako zmienną: Cytat $stringzjsonem=' [ { "name": "Adam", "age": "28", "projects": [ "Shop", "Website", "Facebook" ] }, { "name": "Mark", "age": "23", "projects": [ "Website", "Facebook" ] }, { "name": "Anna", "age": "24", "projects": [ "Facebook" ] } ]' i użyję jej w $dane=json_decode($stringzjsonem,true,512) to $dane są prawidłowo zdekodowanym jsonem, natomiast jeżeli tego samego stringa wrzucę do pliku, czyli w pliku mam: Cytat [ { "name": "Adam", "age": "28", "projects": [ "Shop", "Website", "Facebook" ] }, { "name": "Mark", "age": "23", "projects": [ "Website", "Facebook" ] }, { "name": "Anna", "age": "24", "projects": [ "Facebook" ] } ] i zapiszę jako utf-8, to po wczytaniu go za pomocą $stringzjsonem=file_get_contents($plik) a potem spróbuję $dane=json_decode($stringzjsonem,true,512) to już $dane są puste ;-/ coś robię nie tak? |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 292 Pomógł: 89 Dołączył: 27.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Zamień kodowanie pliku z JSON-em na UTF-8 (bez BOM) - właśnie przez ten BOM masz JSON_ERROR_SYNTAX.
Ten post edytował vonski 18.01.2014, 16:41:26 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 17.01.2014 Ostrzeżenie: (0%) ![]() ![]() |
Yup, dzięki za pomoc!
Kurde już kiedyś miałem problem przez BOM ale zapomniałem o tym ;D |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 07:12 |