ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingงงกับ JSON และ PHP ครับ
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: งงกับ JSON และ PHP ครับ  (อ่าน 3184 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
dekmv
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 222
ออฟไลน์ ออฟไลน์

กระทู้: 3,264



ดูรายละเอียด เว็บไซต์
« เมื่อ: 14 กรกฎาคม 2013, 04:31:22 »

ทดลองสร้างในไฟล์เดียวกัน

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

var_dump(json_decode($json));
echo "<br>";
var_dump(json_decode($json, true));

ได้ผลลัพธ์

object(stdClass)#1 (5) { ["a"]=> int(1) ["b"]=> int(2) ["c"]=> int(3) ["d"]=> int(4) ["e"]=> int(5) }
array(5) { ["a"]=> int(1) ["b"]=> int(2) ["c"]=> int(3) ["d"]=> int(4) ["e"]=> int(5) }

ไม่มีปัญหาครับ

ทีนี้ผมมาลองส่ง JSON จากอีกไฟล์โดย Code แบบนี้ครับ

$array = array(
'a' => 1,
'b' => 2,
'c' => 3,
'd' => 4,
'e' => 5
);
//Then json_encode()
$json = json_encode($array);
echo $json;
die;

ลองรันไฟล์ ได้แบบนี้ที่หน้าจอ {"a":1,"b":2,"c":3,"d":4,"e":5}

แล้วผมก็เขียน Code ใช้รับค่า JSON ที่ส่งมาด้วย Code นี้ครับ

$url = $url.'http://www.youknowup.local/admin/version.php';
$json = file_get_contents($url);

var_dump(json_decode($json));
echo "<br>";
var_dump(json_decode($json, true));

ผลที่ได้คือ

string(34) "{"a":1,"b":2,"c":3,"d":4,"e":5}"
string(34) "{"a":1,"b":2,"c":3,"d":4,"e":5}"

ปัญหาตือทันกลายเป็น String ครับ ต้องแก้ยังไงครับ Huh?
« แก้ไขครั้งสุดท้าย: 14 กรกฎาคม 2013, 05:16:32 โดย dekmv » บันทึกการเข้า
goldxp
สมุนแก๊งเสียว
*

พลังน้ำใจ: 73
ออฟไลน์ ออฟไลน์

กระทู้: 557



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 14 กรกฎาคม 2013, 06:18:22 »

ทดลองสร้างในไฟล์เดียวกัน

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

var_dump(json_decode($json));
echo "<br>";
var_dump(json_decode($json, true));

ได้ผลลัพธ์

object(stdClass)#1 (5) { ["a"]=> int(1) ["b"]=> int(2) ["c"]=> int(3) ["d"]=> int(4) ["e"]=> int(5) }
array(5) { ["a"]=> int(1) ["b"]=> int(2) ["c"]=> int(3) ["d"]=> int(4) ["e"]=> int(5) }

ไม่มีปัญหาครับ

ทีนี้ผมมาลองส่ง JSON จากอีกไฟล์โดย Code แบบนี้ครับ

$array = array(
'a' => 1,
'b' => 2,
'c' => 3,
'd' => 4,
'e' => 5
);
//Then json_encode()
$json = json_encode($array);
echo $json;
die;

ลองรันไฟล์ ได้แบบนี้ที่หน้าจอ {"a":1,"b":2,"c":3,"d":4,"e":5}

แล้วผมก็เขียน Code ใช้รับค่า JSON ที่ส่งมาด้วย Code นี้ครับ

$url = $url.'http://www.youknowup.local/admin/version.php';
$json = file_get_contents($url);

var_dump(json_decode($json));
echo "<br>";
var_dump(json_decode($json, true));

ผลที่ได้คือ

string(34) "{"a":1,"b":2,"c":3,"d":4,"e":5}"
string(34) "{"a":1,"b":2,"c":3,"d":4,"e":5}"

ปัญหาตือทันกลายเป็น String ครับ ต้องแก้ยังไงครับ Huh?

{"a":1,"b":2,"c":3,"d":4,"e":5}
ลอง view sourcecode ดูครับ ด้านบน length ไม่ใช่ 34 ครับ
บันทึกการเข้า

dekmv
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 222
ออฟไลน์ ออฟไลน์

กระทู้: 3,264



ดูรายละเอียด เว็บไซต์
« ตอบ #2 เมื่อ: 14 กรกฎาคม 2013, 10:46:47 »

ต้องแก้ยังไงอ่ะครับ ?

view แล้วเจอแบบนี้ครับ

{"a":1,"b":2,"c":3,"d":4,"e":5}
บันทึกการเข้า
goldxp
สมุนแก๊งเสียว
*

พลังน้ำใจ: 73
ออฟไลน์ ออฟไลน์

กระทู้: 557



ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: 14 กรกฎาคม 2013, 11:08:11 »

เปิดไฟล์ version.php ด้วย notepad++
เลือกเมนู Encoding > encode utf-8 without BOM และ save ครับ

แต่ถ้ายังมีปัญหาลองแก้อีกไฟล์ echo ดูทีละตัวก่อนครับ
$url = 'http://www.youknowup.local/admin/version.php';
$json = file_get_contents($url);
foreach(range(0,strlen($json)-1) as $i){
   echo $json[$i].'____ascii_number='.ord($json[$i]),'<br>';
}
« แก้ไขครั้งสุดท้าย: 14 กรกฎาคม 2013, 11:09:02 โดย goldxp » บันทึกการเข้า

dekmv
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 222
ออฟไลน์ ออฟไลน์

กระทู้: 3,264



ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: 14 กรกฎาคม 2013, 11:18:48 »

ขอบคุณครับผม .... เด๊ยวไปลองก่อนนะครับ  Cry
บันทึกการเข้า
khunzz
ก๊วนเสียว
*

พลังน้ำใจ: 45
ออฟไลน์ ออฟไลน์

กระทู้: 222



ดูรายละเอียด
« ตอบ #5 เมื่อ: 14 กรกฎาคม 2013, 12:34:38 »

ถ้าในไฟล์ที่ส่งค่าอย่าให้ <html>, <body> ปนอยู่ครับ ไม่งั้นมันจะรับค่าออกมาเป็น string ต้องให้เป็นแต่ json ล้วนๆ view source ดูก็ให้มีแต่ json
ไม่ลองใช้ serialize, unserialize ดูอะครับ ใช้ง่ายเหมือน json เลยครับ
บันทึกการเข้า

icez
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 296
ออฟไลน์ ออฟไลน์

กระทู้: 2,887



ดูรายละเอียด
« ตอบ #6 เมื่อ: 14 กรกฎาคม 2013, 12:38:25 »

ถ้าในไฟล์ที่ส่งค่าอย่าให้ <html>, <body> ปนอยู่ครับ ไม่งั้นมันจะรับค่าออกมาเป็น string ต้องให้เป็นแต่ json ล้วนๆ view source ดูก็ให้มีแต่ json
ไม่ลองใช้ serialize, unserialize ดูอะครับ ใช้ง่ายเหมือน json เลยครับ
json ดีกว่า serialize ครับ และถ้า json ไม่ได้ serialize ก็ควรจะให้ผลแบบเดียวกันครับ
บันทึกการเข้า

THZHost SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ
max30012540
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 196
ออฟไลน์ ออฟไลน์

กระทู้: 1,307



ดูรายละเอียด
« ตอบ #7 เมื่อ: 14 กรกฎาคม 2013, 12:50:09 »

$array = array(
'a' => 1,
'b' => 2,
'c' => 3,
'd' => 4,
'e' => 5
);
//Then json_encode()
$json = json_encode($array);
echo $json;
die;

ลองรันไฟล์ ได้แบบนี้ที่หน้าจอ {"a":1,"b":2,"c":3,"d":4,"e":5}

แล้วผมก็เขียน Code ใช้รับค่า JSON ที่ส่งมาด้วย Code นี้ครับ

$url = $url.'http://www.youknowup.local/admin/version.php';
$json = file_get_contents($url);

var_dump(json_decode($json));
echo "<br>";
var_dump(json_decode($json, true));

เอ... ผมลองดู ก็ได้ปกตินะครับ

hxxp://host-1gb.com/json/en.php
โค๊ด:
<?Php
$array = array(
'a' => 1,
'b' => 2,
'c' => 3,
'd' => 4,
'e' => 5
);
//Then json_encode()
$json = json_encode($array);
echo $json;
die;
?>


hxxp://host-1gb.com/json/de.php
โค๊ด:
<?Php
$url = 'http://www.host-1gb.com/json/en.php';
$json = file_get_contents($url);

var_dump(json_decode($json));
echo "<br>";
var_dump(json_decode($json, true));
?>
บันทึกการเข้า
icez
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 296
ออฟไลน์ ออฟไลน์

กระทู้: 2,887



ดูรายละเอียด
« ตอบ #8 เมื่อ: 14 กรกฎาคม 2013, 12:56:16 »

php > echo strlen('{"a":1,"b":2,"c":3,"d":4,"e":5}');
31


ผมลองเทสดูแล้ว น่าจะเป็นตามนี้ครับ (3 ตัวที่เกินมา เป็น UTF BOM)
เปิดไฟล์ version.php ด้วย notepad++
เลือกเมนู Encoding > encode utf-8 without BOM และ save ครับ

แต่ถ้ายังมีปัญหาลองแก้อีกไฟล์ echo ดูทีละตัวก่อนครับ
$url = 'http://www.youknowup.local/admin/version.php';
$json = file_get_contents($url);
foreach(range(0,strlen($json)-1) as $i){
   echo $json[$i].'____ascii_number='.ord($json[$i]),'<br>';
}
บันทึกการเข้า

THZHost SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ
sosona
คนรักเสียว
*

พลังน้ำใจ: 7
ออฟไลน์ ออฟไลน์

กระทู้: 150



ดูรายละเอียด เว็บไซต์
« ตอบ #9 เมื่อ: 16 กรกฎาคม 2013, 05:42:38 »

yum --enablerepo=remi install jason
yum install yason
บันทึกการเข้า

หน้า: [1]   ขึ้นบน
พิมพ์