JSON คืออะไรและทำไมฉันถึงต้องใช้มัน


542

ฉันดูวิกิพีเดียและ Googled และอ่านเอกสารอย่างเป็นทางการแล้ว แต่ฉันยังไม่ถึงจุดที่ฉันเข้าใจจริงๆว่า JSON คืออะไรและทำไมฉันถึงใช้มัน

ฉันสร้างแอพพลิเคชั่นโดยใช้ PHP, MySQL และ Javascript / HTML มาระยะหนึ่งแล้วและถ้า JSON สามารถทำบางสิ่งบางอย่างเพื่อทำให้ชีวิตของฉันง่ายขึ้นหรือรหัสของฉันดีขึ้นหรือส่วนต่อประสานกับผู้ใช้ของฉันดีขึ้น มีใครให้คำอธิบายสั้น ๆ กับฉันได้ไหม


2
JSON เป็นชุดย่อยของ YAML yaml.org
แบรดกิลเบิร์ต

15
copterlabs.com/blog/json-what-it-is-how-it-works-how-to-use-itนี่เป็นตัวอย่างการใช้งานที่ดีตรงไปตรงมา
Tom

1
อ่านเพิ่มเติมเกี่ยวกับ I-JSON: tbray.org/ongoing/When/201x/2015/03/23/i-json
Christophe Roussy

1
+ Brad Gilbert ไม่จริง - เป็นวิธีของตัวเองในการแสดงข้อมูลและคล้ายกับ JSON เพียงเพราะทั้งคู่แสดงวัตถุเป็นสตริง (คล้ายกับ XML หรือ plists หรืออื่น ๆ อีกมากมาย) แต่ JSON นั้นดีกว่าสำหรับการเขียนด้วยเครื่องและ YAML สำหรับการเขียนของมนุษย์ .
Ben Aubin

คำตอบ:


649

JSON (สัญลักษณ์วัตถุ JavaScript) เป็นรูปแบบน้ำหนักเบาที่ใช้สำหรับการแลกเปลี่ยนข้อมูล มันขึ้นอยู่กับส่วนย่อยของภาษา JavaScript (วิธีการสร้างวัตถุใน JavaScript) ตามที่ระบุใน MDN JavaScript บางตัวไม่ใช่ JSON และ JSON บางตัวไม่ใช่ JavaScript

ตัวอย่างการใช้งานนี้คือการตอบกลับการบริการเว็บ ในวัน 'เก่า' บริการเว็บใช้ XML เป็นรูปแบบข้อมูลหลักของพวกเขาสำหรับการส่งข้อมูลกลับ แต่เนื่องจาก JSON ปรากฏ ( รูปแบบ JSON ถูกระบุในRFC 4627โดย Douglas Crockford ) มันเป็นรูปแบบที่ต้องการมากกว่ามีน้ำหนักเบา

คุณสามารถหาข้อมูลมากขึ้นอย่างเป็นทางการในเว็บไซต์ JSON

JSON สร้างขึ้นด้วยสองโครงสร้าง:

  • ชุดของคู่ชื่อ / ค่า ในภาษาต่างๆสิ่งนี้จะถูกรับรู้ในฐานะวัตถุ, บันทึก, โครงสร้าง, พจนานุกรม, ตารางแฮช, รายการคีย์หรืออาร์เรย์ที่เชื่อมโยง
  • รายการสั่งซื้อของค่า ในภาษาส่วนใหญ่สิ่งนี้ถูกรับรู้เป็นอาร์เรย์เวกเตอร์รายการหรือลำดับ

โครงสร้าง JSON



แผนภาพวัตถุ JSON

ไดอะแกรมของอาร์เรย์ JSON

แผนภาพค่า JSON

แผนภาพสตริง JSON

แผนภาพหมายเลข JSON

นี่คือตัวอย่างของข้อมูล JSON:

{
     "firstName": "John",
     "lastName": "Smith",
     "address": {
         "streetAddress": "21 2nd Street",
         "city": "New York",
         "state": "NY",
         "postalCode": 10021
     },
     "phoneNumbers": [
         "212 555-1234",
         "646 555-4567"
     ]
 }

JSON ใน JavaScript

JSON (ใน Javascript) เป็นสตริง!

ผู้คนมักจะคิดว่าวัตถุ Javascript ทั้งหมดเป็น JSON และ JSON นั้นเป็นวัตถุ Javascript สิ่งนี้ไม่ถูกต้อง

ใน Javascript var x = {x:y}คือไม่ JSONนี้เป็นวัตถุ Javascript ทั้งสองนั้นไม่เหมือนกัน JSON เทียบเท่า (แสดงในภาษาจาวาสคริปต์) var x = '{"x":"y"}'จะเป็น xเป็นวัตถุประเภทสตริงไม่ใช่วัตถุในสิทธิของตนเอง ที่จะเปิดนี้เป็นวัตถุ Javascript เต็มเปี่ยมแรกที่คุณจะต้องแยกมันvar x = JSON.parse('{"x":"y"}');, xคือตอนนี้วัตถุ แต่นี้ไม่ได้อีกต่อไป JSON

ดูJavascript object Vs JSON


เมื่อทำงานกับ JSON และ JavaScript คุณอาจถูกล่อลวงให้ใช้evalฟังก์ชันเพื่อประเมินผลลัพธ์ที่ส่งคืนในการเรียกกลับ แต่ไม่แนะนำเนื่องจากมีอักขระสองตัว (U + 2028 & U + 2029) ที่ถูกต้องใน JSON แต่ไม่ใช่ใน JavaScript (อ่านเพิ่มเติมได้ที่นี่ )

ดังนั้นจึงต้องพยายามใช้สคริปต์ของ Crockford ที่ตรวจสอบ JSON ที่ถูกต้องก่อนที่จะประเมิน ลิงก์ไปยังคำอธิบายสคริปต์พบได้ที่นี่และนี่คือลิงก์โดยตรงไปยังไฟล์ js เบราว์เซอร์หลัก ๆ ทุกวันนี้มีการใช้งานในลักษณะนี้

ตัวอย่างเกี่ยวกับวิธีใช้ตัวแยกวิเคราะห์ JSON (ด้วย json จากข้อมูลโค้ดด้านบน):

//The callback function that will be executed once data is received from the server
var callback = function (result) {
    var johnny = JSON.parse(result);
    //Now, the variable 'johnny' is an object that contains all of the properties 
    //from the above code snippet (the json example)
    alert(johnny.firstName + ' ' + johnny.lastName); //Will alert 'John Smith'
};

ตัวแยกวิเคราะห์ JSON ยังมีวิธีที่มีประโยชน์อีกวิธีหนึ่งเช่นstringifyกัน วิธีนี้ยอมรับวัตถุ JavaScript เป็นพารามิเตอร์และส่งกลับสตริงที่มีรูปแบบ JSON สิ่งนี้มีประโยชน์เมื่อคุณต้องการส่งข้อมูลกลับไปที่เซิร์ฟเวอร์:

var anObject = {name: "Andreas", surname : "Grech", age : 20};
var jsonFormat = JSON.stringify(anObject);
//The above method will output this: {"name":"Andreas","surname":"Grech","age":20}

สองวิธีข้างต้น ( parseและstringify) ใช้พารามิเตอร์ตัวที่สองซึ่งเป็นฟังก์ชั่นที่จะถูกเรียกใช้สำหรับทุกคีย์และค่าในทุกระดับของผลลัพธ์สุดท้ายและแต่ละค่าจะถูกแทนที่ด้วยผลลัพธ์ของฟังก์ชันอินพุตของคุณ (เพิ่มเติมที่นี่ )

Btw สำหรับคุณทุกคนที่คิดว่า JSON นั้นมีไว้สำหรับ JavaScript เท่านั้นลองอ่านโพสต์นี้เพื่ออธิบายและยืนยันเป็นอย่างอื่น


อ้างอิง


1
ไม่ว่าข้อมูลจะถูกทำให้เป็นอันดับคุณจะมีโปรแกรมแยกวิเคราะห์ใช่ไหม ดังนั้นใครจะสนใจว่าคุณใช้รูปแบบใดในการส่งข้อมูลหากรายละเอียดการใช้งานนั้นจะถูกแยกออกไป
Tom Lehman

6
ที่จริงแล้วถ้าคุณส่งข้อมูลไปยังไคลเอนต์และเซิร์ฟเวอร์ฉันคิดว่ามันสำคัญมากที่จะต้องระวังขนาดการตอบกลับของคุณ
Andreas Grech

9
สำหรับ pedantic นั้นมีอักขระสองตัวที่ JSON จัดการแตกต่างจาก JavaScript ซึ่งป้องกันไม่ให้เป็นชุดย่อยที่เข้มงวด: timelessrepo.com/json-isnt-a-javascript-subset
Jeremy Banks

เมื่อคุณบอกว่ามันมีน้ำหนักเบากว่า XML คุณหมายถึงขนาดไฟล์หรือน้ำหนักเบามีความหมายพิเศษในการเข้ารหัส?
whatahitson

1
ดังนั้นคุณจะแทนที่ XML ด้วย JSON หรือไม่ นั่นคือสิ่งที่คุณพูด? ถ้าใช่ ... เยี่ยมมาก xml เป็นฝันร้าย
James111

66

แนวคิดอธิบาย - ไม่มีรหัสหรือศัพท์แสงทางเทคนิค

JSON คืออะไร - ฉันอธิบายให้ภรรยาTM ทราบได้อย่างไร

ฉัน: “ มันเป็นวิธีการสื่อสารกับใครบางคนในการเขียน .... แต่มีกฎเฉพาะ

ภรรยา:ใช่ ....

ฉัน:ในภาษาอังกฤษธรรมดากฎค่อนข้างหลวม: เหมือนกับการต่อสู้ในกรง ไม่เช่นนั้นกับ JSON มีหลายวิธีในการอธิบายบางสิ่ง:

•ตัวอย่างที่ 1: ครอบครัวของเรามี 4 คน: คุณฉันและลูก 2 คน

•ตัวอย่างที่ 2: ครอบครัวของเรา: คุณฉันฉันเด็ก 1 และเด็ก 2

•ตัวอย่างที่ 3: ครอบครัว: [คุณ, ฉัน, เด็ก 1, เด็ก 2]

•ตัวอย่างที่ 4: เรามี 4 คนในครอบครัวของเรา: แม่พ่อเด็ก 1 และเด็ก 2

ภรรยา:ทำไมพวกเขาไม่ใช้แค่ภาษาอังกฤษธรรมดาแทน?

ฉัน:พวกเขาจะ แต่จำไว้ว่าเรากำลังติดต่อกับคอมพิวเตอร์ คอมพิวเตอร์โง่และไม่สามารถเข้าใจประโยคได้ ดังนั้นเราต้องเจาะจงจริงๆเมื่อคอมพิวเตอร์เข้ามาเกี่ยวข้องมิฉะนั้นพวกเขาจะสับสน นอกจากนี้ JSON เป็นวิธีการสื่อสารที่มีประสิทธิภาพพอสมควรดังนั้นสิ่งที่ไม่เกี่ยวข้องส่วนใหญ่จะถูกตัดออกซึ่งเป็นสิ่งที่ค่อนข้างดี หากคุณต้องการสื่อสารกับครอบครัวของเราไปยังคอมพิวเตอร์วิธีหนึ่งที่คุณสามารถทำได้คือ:

{
                "Family" :  ["Me", "Wife", "Kid1", "Kid2"] 
}

……และนั่นคือ JSON โดยทั่วไป แต่จำไว้ว่าคุณต้องเชื่อฟังกฎไวยากรณ์ JSON หากคุณทำผิดกฎเหล่านั้นคอมพิวเตอร์จะไม่เข้าใจสิ่งที่คุณกำลังเขียน

ภรรยา:ดังนั้นฉันจะเขียนใน Json ได้อย่างไร

วิธีที่ดีคือการใช้ json serialiser ซึ่งเป็นห้องสมุดที่ยกของหนักสำหรับคุณ

สรุป

JSON นั้นเป็นวิธีการสื่อสารข้อมูลกับใครบางคนด้วยกฎที่เฉพาะเจาะจงมาก ใช้คีย์คู่ค่าและอาร์เรย์ นี่คือแนวคิดที่อธิบาย ณ จุดนี้มันมีค่าอ่านกฎเฉพาะข้างต้น


48

ในระยะสั้น - JSON เป็นวิธีการทำให้เป็นอันดับในลักษณะที่จะกลายเป็นรหัส JavaScript เมื่อเรียกใช้งาน (ด้วย eval หรือวิธีอื่น) รหัสนี้จะสร้างและส่งคืนออบเจ็กต์ JavaScript ที่มีข้อมูลที่คุณเป็นอนุกรม สิ่งนี้ใช้ได้เนื่องจาก JavaScript อนุญาตให้ใช้ไวยากรณ์ต่อไปนี้:

var MyArray = [ 1, 2, 3, 4]; // MyArray is now an array with 4 elements
var MyObject = {
    'StringProperty' : 'Value',
    'IntProperty' : 12,
    'ArrayProperty' : [ 1, 2, 3],
    'ObjectProperty' : { 'SubObjectProperty': 'SomeValue' }
}; // MyObject is now an object with property values set.

คุณสามารถใช้สิ่งนี้ได้หลายวัตถุประสงค์ สำหรับวิธีนี้เป็นวิธีที่สะดวกสบายในการส่งผ่านข้อมูลจากเซิร์ฟเวอร์ของคุณไปยังโค้ด JavaScript ของคุณ ดังนั้นจึงมักใช้ใน AJAX

คุณยังสามารถใช้เป็นกลไกการทำให้เป็นอนุกรมแบบสแตนด์อโลนซึ่งง่ายกว่าและใช้พื้นที่น้อยกว่า XML มีไลบรารีจำนวนมากที่ให้คุณสามารถซีเรียลไลซ์และยกเลิกการเรียงลำดับวัตถุใน JSON สำหรับภาษาการเขียนโปรแกรมต่างๆ


31

ในระยะสั้นมันเป็นสัญกรณ์สคริปต์สำหรับการส่งผ่านข้อมูลเกี่ยวกับ ในบางทางเลือก XML, สนับสนุนชนิดข้อมูลพื้นฐาน, อาร์เรย์และอาร์เรย์ที่เชื่อมโยงกัน (คู่ค่าชื่อ, เรียกว่าวัตถุเพราะนั่นคือสิ่งที่พวกเขาเป็นตัวแทน)

ไวยากรณ์คือที่ใช้ใน JavaScript และ JSON นั้นหมายถึง "JavaScript Object Notation" อย่างไรก็ตามมันเป็นแบบพกพาและใช้ในภาษาอื่นด้วย

ลิงค์ที่มีประโยชน์สำหรับรายละเอียดอยู่ที่นี่:

http://secretgeek.net/json_3mins.asp


19

รูปแบบ JSON มักใช้สำหรับซีเรียลไลซ์เซชั่นและการส่งข้อมูลที่มีโครงสร้างผ่านการเชื่อมต่อเครือข่าย โดยส่วนใหญ่จะใช้เพื่อส่งข้อมูลระหว่างเซิร์ฟเวอร์และเว็บแอปพลิเคชันซึ่งทำหน้าที่เป็นทางเลือกแทน XML


16

JSON เป็นสัญลักษณ์วัตถุ JavaScript มันเป็นวิธีที่กะทัดรัดกว่าในการส่งชุดข้อมูลข้ามการเชื่อมต่อเครือข่ายเมื่อเปรียบเทียบกับ XML ฉันขอแนะนำให้ใช้ JSON ในแอปพลิเคชันที่คล้ายกับ AJAX โดยที่ XML จะเป็นตัวเลือก "แนะนำ" verbosity ของ XML จะเพิ่มเวลาในการดาวน์โหลดและการใช้แบนด์วิดท์ที่เพิ่มขึ้น ($$$) คุณสามารถทำเอฟเฟ็กต์แบบเดียวกันกับ JSON ได้และการเพิ่มมาร์กอัพของมันนั้นเกือบจะเป็นข้อมูลเฉพาะของตัวมันเองและไม่ใช่โครงสร้างพื้นฐาน


11

คำตอบสั้น ๆ ที่พบบ่อยคือ: ถ้าคุณใช้ AJAX เพื่อทำการร้องขอข้อมูลคุณสามารถส่งและส่งคืนวัตถุเป็นสตริง JSON ได้อย่างง่ายดาย ส่วนขยายที่พร้อมใช้งานสำหรับ Javascript รองรับ toJSON () สำหรับการเรียกใช้จาวาสคริปต์ทุกประเภทเพื่อส่งข้อมูลไปยังเซิร์ฟเวอร์ในคำขอ AJAX การตอบกลับ AJAX สามารถส่งคืนวัตถุเป็นสตริง JSON ซึ่งสามารถแปลงเป็นวัตถุ Javascript โดยการเรียก Eval อย่างง่ายเช่นหากฟังก์ชั่น AJAX someAjaxFunctionCallReturningJson คืน

"{ \"FirstName\" : \"Fred\", \"LastName\" : \"Flintstone\" }"

คุณสามารถเขียนใน Javascript

var obj = eval("(" + someAjaxFunctionCallReturningJson().value + ")");
alert(obj.FirstName);
alert(obj.LastName);

JSON ยังสามารถใช้สำหรับเพย์โหลดเว็บเซอร์วิสและอื่น ๆ ได้ แต่มันสะดวกมากสำหรับผลลัพธ์ AJAX

  • อัปเดต (สิบปีต่อมา): อย่าทำเช่นนี้ใช้ JSON.parse

1
ด้วย eval () ทุกสิ่งจะถูกประเมิน มันเสี่ยงต่อความปลอดภัย
โธมัสเวลเลอร์

@ThomasWeller ใช่คำตอบนี้เป็นโบราณฉันจะไปกับ JSON.parse ตอนนี้ขอบคุณ!
Steven A. Lowe

8

ฉันชอบ JSON ส่วนใหญ่เป็นเพราะมันก็สั้น สำหรับเนื้อหาเว็บที่สามารถ gzipped ไม่จำเป็นต้องเป็นเรื่องใหญ่ (เหตุใดจึงเป็นx html ที่ได้รับความนิยม) แต่มีโอกาสที่สิ่งนี้จะเป็นประโยชน์

ตัวอย่างเช่นสำหรับโครงการหนึ่งที่ผมได้รับการส่งข้อมูลที่จำเป็นต้องต่อเนื่องและส่งผ่านXMPP เนื่องจากเซิร์ฟเวอร์ส่วนใหญ่จะ จำกัด จำนวนข้อมูลที่คุณสามารถส่งในข้อความเดียวฉันจึงพบว่ามีประโยชน์ในการใช้ JSON แทนทางเลือกที่ชัดเจน XML

เป็นโบนัสเพิ่มเติมหากคุณคุ้นเคยกับ Python หรือ Javascript คุณจะรู้จัก JSON แล้วและสามารถตีความได้โดยไม่ต้องฝึกฝนอะไรเลย


8

JSON คืออะไร

JavaScript Object Notation (JSON) เป็นรูปแบบการแลกเปลี่ยนข้อมูลที่มีน้ำหนักเบาซึ่งได้รับแรงบันดาลใจจากตัวอักษรวัตถุของ JavaScript

ค่า JSON ประกอบด้วย:

วัตถุ (คอลเลกชันของคู่ค่าชื่อ) อาร์เรย์ (รายการของค่าสั่งซื้อ) จำนวนสตริง (ในเครื่องหมายคำพูดคู่) ตัวเลขจริงเท็จหรือเป็นโมฆะ

JSON เป็นภาษาอิสระ

JSON ด้วย PHP?

หลังจาก PHP เวอร์ชัน 5.2.0 แล้วส่วนขยาย JSON จะถอดรหัสและเข้ารหัสฟังก์ชันการทำงานเป็นค่าเริ่มต้น

Json_encode - ส่งคืนการแสดง JSON ของค่า Json_decode - ถอดรหัสสตริง JSON Json_last_error - ส่งคืนข้อผิดพลาดล่าสุดที่เกิดขึ้น

ไวยากรณ์และกฎของ JSON?

ไวยากรณ์ JSON ได้มาจากไวยากรณ์สัญกรณ์วัตถุ JavaScript:

ข้อมูลอยู่ในคู่ชื่อ / ค่าข้อมูลถูกคั่นด้วยเครื่องหมายจุลภาคเครื่องหมายวงเล็บปีกกาวัตถุวงเล็บเหลี่ยมยึดอาร์เรย์


4

เราต้องทำโครงการในวิทยาลัยและเราประสบปัญหาใหญ่มากเรียกว่านโยบายแหล่งกำเนิดเดียวกัน สิ่งอื่น ๆ มันทำให้วิธี XMLHttpRequest ของคุณจาก Javascript ไม่สามารถส่งคำขอไปยังโดเมนอื่นนอกเหนือจากโดเมนที่เว็บไซต์ของคุณเปิดอยู่

ตัวอย่างเช่นคุณไม่สามารถขอ www.otherexample.com หากเว็บไซต์ของคุณอยู่ใน www.example.com JSONRequest อนุญาตให้ทำได้ แต่คุณจะได้ผลลัพธ์ในรูปแบบ JSON หากไซต์นั้นอนุญาต (เช่นมีบริการเว็บที่ส่งคืนข้อความใน JSON) นั่นเป็นปัญหาหนึ่งที่คุณสามารถใช้ JSON ได้

นี่คือสิ่งที่ใช้งานได้จริง: Yahoo JSON


4

ความแตกต่างระหว่าง JSON และไวยากรณ์ทั่วไปจะเป็นดังนี้ (ใน Javascript)

ตามธรรมเนียม

 function Employee(name, Id, Phone, email){

      this.name = name;
      this.Id = Id;
      this.Phone = Phone;
      this.email = email;
  }

  //access or call it as 

var Emp = new Employee("mike","123","9373849784","mike.Anderson@office.com");

ด้วย JSON

ถ้าเราใช้ JSON เราสามารถนิยามในลักษณะที่แตกต่างกันดังนี้

  function Employee(args){

   this.name = args.name;
   this.Id = args.Id;
   this.Phone = args.Phone;
   this.email = args.email;
}

//now access this as...

var Emp = new Employee({'name':'Mike', 'Id':'123', 'Phone':'23792747', 'email':'mike.adnersone@office.com'});

สิ่งสำคัญที่เราต้องจำไว้คือถ้าเราต้องสร้างคลาส "พนักงาน" หรือคำกริยาที่มีองค์ประกอบ 100 รายการโดยไม่มีวิธี JSON เราต้องแยกวิเคราะห์ทุกอย่างเมื่อสร้างคลาส แต่ด้วย JSON เราสามารถกำหนดวัตถุแบบอินไลน์ได้เฉพาะเมื่อมีการกำหนดวัตถุใหม่สำหรับคลาส

ดังนั้นบรรทัดด้านล่างนี้เป็นวิธีการทำสิ่งต่างๆด้วย JSON (เป็นวิธีง่ายๆในการกำหนดสิ่งต่าง ๆ )

 var Emp = new Employee({'name':'Mike', 'Id':'123', 'Phone':'23792747', 'email':'mike.adnersone@office.com'});

2
นั่นไม่ใช่ JSON อย่างแน่นอน - เป็นวัตถุ Javascript (ไม่ใช่ JSON)
Ben Aubin

4

บางครั้งมีการให้ข้อมูลเชิงเทคนิคในที่ที่ไม่จำเป็นและในขณะที่คำตอบที่ได้รับการโหวตมากที่สุดนั้นเป็นเรื่องทางเทคนิคและเจาะจงฉันเองไม่คิดว่าพวกเขาจะเข้าใจง่ายหรือรวบรัดมากขึ้นเท่าที่จะสามารถพบได้ในวิกิพีเดีย เอกสารอย่างเป็นทางการ

วิธีที่ฉันชอบนึกถึง JSON คือสิ่งที่เป็น - ภาษาภายในโลกที่มีภาษาต่างกัน อย่างไรก็ตามความแตกต่างระหว่าง JSON และภาษาอื่น ๆ คือ "ทุกคน" "พูด" JSON พร้อมกับ "ภาษาพื้นเมือง"

โดยใช้ตัวอย่างโลกแห่งความจริงลองทำเป็นว่าเรามีสามคน หนึ่งคนพูดภาษาอิกโบเป็นภาษาแม่ของพวกเขา บุคคลที่สองต้องการโต้ตอบกับบุคคลแรก แต่บุคคลแรกพูดถึงโยรูบาเป็นภาษาแรก

พวกเราทำอะไรได้บ้าง?

โชคดีที่บุคคลที่สามในตัวอย่างของเราเติบโตขึ้นมาพูดภาษาอังกฤษ แต่ก็เกิดขึ้นที่จะพูดทั้งภาษาอิกโบและโยรูบาเป็นภาษาที่สองและสามารถทำหน้าที่เป็นตัวกลางระหว่างบุคคลสองคนแรก

ในโลกแห่งการเขียนโปรแกรม "person" ตัวแรกคือ Python, "person" ตัวที่สองคือ Ruby และ "person" ตัวที่สามคือ JSON ที่เกิดขึ้นเพื่อให้สามารถ "แปล" Ruby เป็น Python และในทางกลับกัน! ตอนนี้เห็นได้ชัดว่าการเปรียบเทียบนี้ไม่ได้สมบูรณ์แบบ แต่ในฐานะคนที่พูดได้สองภาษาฉันเชื่อว่ามันเป็นวิธีที่ง่ายในการดูว่า JSON โต้ตอบกับภาษาโปรแกรมอื่น ๆ อย่างไร


2

มันง่ายมาก JSON หมายถึงสัญลักษณ์ของวัตถุสคริปต์ Java คิดว่าเป็นทางเลือกในการใช้ XML สำหรับการถ่ายโอนข้อมูลระหว่างส่วนประกอบซอฟต์แวร์

ตัวอย่างเช่นฉันเพิ่งเขียนบริการเว็บจำนวนมากที่ส่งคืน JSON และนักพัฒนา Javascript บางคนก็เขียนโค้ดที่เรียกว่าบริการและใช้ข้อมูลที่ส่งคืนในรูปแบบนั้น


2

JSON (สัญลักษณ์วัตถุ Javascript) เป็นรูปแบบข้อมูลน้ำหนักเบาสำหรับการแลกเปลี่ยนข้อมูล / ถ่ายโอน มันอยู่ในคู่ค่าคีย์เป็น JavaScript คือ สำหรับ REST API มันใช้กันอย่างแพร่หลายสำหรับการถ่ายโอนข้อมูลจากเซิร์ฟเวอร์ไปยังลูกค้า ทุกวันนี้เว็บไซต์โซเชียลมีเดียหลายแห่งกำลังใช้สิ่งนี้อยู่ แม้ว่าฉันจะไม่เห็นว่านี่มีประสิทธิภาพเท่า XML กับประเภทข้อมูล XML มีประเภทข้อมูลที่หลากหลายและ XSD JSON ขาดสิ่งนี้เล็กน้อย

สำหรับข้อมูลสตริงจำนวนเดียวกัน JSON จะเบากว่าเมื่อเปรียบเทียบกับ XML เนื่องจาก XML มีแท็กเปิดและปิดทั้งหมดและ ...


0

ในบริบท Java เหตุผลหนึ่งที่ JSON อาจต้องการใช้คือเป็นทางเลือกที่ดีมากในกรอบการทำงานของ Serialization ของ Java ซึ่งได้รับการแสดง (ในอดีต) ว่ามีช่องโหว่ที่ค่อนข้างรุนแรง

Joshua Bloch กล่าวถึงเรื่องนี้ในเชิงลึกในรายการที่ 85 "ชอบทางเลือกอื่นในการจัดลำดับ Java" (Effective Java 3rd Edition)

อันดับแรกของ Java หมายถึงการแปลโครงสร้างข้อมูลเป็นรูปแบบที่สามารถส่งหรือจัดเก็บได้ง่าย JSON ตรงตามข้อกำหนดนี้โดยไม่มีการใช้ประโยชน์อย่างจริงจังตามที่อ้างถึงข้างต้น


-3

ลองใช้รหัสต่อไปนี้เพื่อแยกการตอบสนอง php json ของคุณ: read.php

<script
  src="https://code.jquery.com/jquery-3.2.1.min.js"
  integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
  crossorigin="anonymous"></script>
<script type="text/javascript">  
$.ajax({
    url:'index.php',
    data:{},
    type:"POST",
    success:function(result) {
        jsondecoded = $.parseJSON(result);
        $.each(jsondecoded, function(index, value) {
            $("#servers").text($("#servers").text() + " " + value.servername);
            console.log(value.start);
            console.log(value.end);
            console.log(value.id);
        });
    },
    statusCode: {
    404: function() {
      alert( "page not found" );
    }
  }
});
</script>

server.php

<?php 
echo '[{"start":"2017-08-29","end":"2017-09-01","id":"22"},{"start":"2017-09-03","end":"2017-09-06","id":"23"}]';
?>

ในขณะที่รหัสนี้อาจตอบคำถามให้บริบทเพิ่มเติมเกี่ยวกับวิธีการและ / หรือทำไมมันแก้ปัญหาจะปรับปรุงค่าระยะยาวของคำตอบ
Nic3500
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.