Пример за JSON Stringify - Как да анализираме JSON обект с JS

Има толкова много езици за програмиране и всеки език има свои собствени характеристики. Но всички те имат едно общо нещо: те обработват данни. От обикновен калкулатор до суперкомпютри, всички те работят върху данни.

Същото е и с хората: има толкова много държави, толкова много култури и толкова много знания във всяка общност.

Но за да общуват с други общности, хората се нуждаят от обща среда. Езикът е за хората това, което JSON е за програмиране, общ носител на предаване на данни.

Какво е JSON?

JSON означава J ava S cript O bject N otation. Така че, преди да разберете JSON, нека разберем обектите в JavaScript.

Всеки език за програмиране има някакъв метод за съхраняване на подобни данни заедно. В С например те се наричат ​​структури.

В JavaScript обектите са колекция от двойки ключ-стойност, където стойностите могат да бъдат всяка променлива (число, низ, булева стойност), друг обект или дори функция. Обектите са много полезни в обектно-ориентираното програмиране.

Обектно-ориентираното програмиране е програмна парадигма, основана на концепцията за „обекти“, която може да съдържа данни под формата на полета и код под формата на процедури.

Нека разгледаме един пример.

В JavaScript обектите се дефинират с помощта на фигурни скоби, например:

var obj = {};

Тук objе празен обект. Можете също да създавате обекти с помощта на конструктори, например:

function Student(name, roll_number, age) { this.name = name; this.roll_number = roll_number; this.age = age; } var student1 = new Student("Abhishek", "123", 18); console.log(student1.name, student1.roll_number, student1.age);

Това би дало резултата Abhishek 123 18.

По този начин създавате обекти в JavaScript. Но тези обекти все още са променливи, които са специфични само за JavaScript.

Ако искате да експортирате тези обекти и например да ги изпратите на сървър, имате нужда от метод за тяхното кодиране. Да видим как се прави.

JSON Stringify

За да предаваме данни от едно устройство на друго и един език на друг, се нуждаем от структурирано, единно и добре дефинирано споразумение.

Въпреки че JSON се основава на JS обекти, определени условия трябва да са валидни. За щастие не е нужно да се притеснявате за тези условия - защото в JavaScript има метод, наречен JSON.stringify().

Този метод се използва за преобразуване на JS обект в кодиран низ, който може да се предава навсякъде, без да се губят данни.

Може да изглежда вълшебно, че всеки обект може да бъде кодиран в низ и изпратен навсякъде. Нека го разберем по-задълбочено чрез някои примери.

Това е прототипът на метода stringify:

JSON.stringify(value[, replacer[, space]])

Първият параметър е valueкой е обектът, който искате да нитрифицирате. Вторият и третият параметър не са задължителни и могат да се използват, ако искате да персонализирате как ще бъдат кодирани (например разделителят и отстъпът).

Нека се опитаме да разграничим горния ни пример.

function Student(name, roll_number, age) { this.name = name; this.roll_number = roll_number; this.age = age; } var student1 = new Student("Abhishek", "123", 18); var str = JSON.stringify(student1); console.log(str);

Това ще даде изхода {"name":"Abhishek","roll_number":"123","age":18}.

Ако използваме незадължителните параметри, тоест заместваме JSON.stringify(student1)с JSON.stringify(student1, null, 2), ще получим нещо подобно:

{ "name": "Abhishek", "roll_number": "123", "age": 18 }

Можете да ги използвате, за да отпечатате JSON в четим формат. Сега нека опитаме още един пример.

Тук ще използваме обектни методи. Обектните методи са функции в обект, които могат да бъдат извикани с този обект, като се използват методите в горния пример:

function Student(name, roll_number, age) { this.name = name; this.roll_number = roll_number; this.age = age; this.print = function() { console.log(this.name, this.roll_number, this.age); } } var student1 = new Student("Abhishek", "123", 18); student1.print();

Това ще даде същата мощност като първи пример, това е, Abhishek 123 18.

Обектните методи могат да се използват за изпълнение на функции, свързани с обект, и за използване на свойствата на обекта. Нека се опитаме да разделим този обект.

function Student(name, roll_number, age) { this.name = name; this.roll_number = roll_number; this.age = age; this.print = function() { console.log(this.name, this.roll_number, this.age); } } var student1 = new Student("Abhishek", "123", 18); var str = JSON.stringify(student1); console.log(str);

Той все пак ще ви даде същия изход {"name":"Abhishek","roll_number":"123","age":18},.

По този начин обектните методи се игнорират от функцията stringify. Ако искате и те да бъдат предадени, първо трябва да ги преобразувате в низ.

Например можете да се обадите student1.print = student1.print.toString()и след това да ги строите. Тогава ще получите нещо подобно:

{"name":"Abhishek","roll_number":"123","age":18,"print":"function() {\n    console.log(this.name, this.roll_number, this.age);\n  }"}

Нека разгледаме друг обект:

var obj = {}; obj.key1 = "value1"; obj.key2 = obj; var str = JSON.stringify(obj); console.log(obj);

Това ще доведе до грешка при казването Uncaught TypeError: Converting circular structure to JSON.

Това се случва, защото key2 се връща обратно към obj. Такива обекти са известни като кръгови обекти и те не могат да бъдат преобразувани в JSON низ.

Тук е полезен вторият параметър. Въпреки че няма да демонстрирам как работи тук, можете да намерите решението на тази MDN страница.

Ето как кодирате JSON. Сега нека видим как да анализираме JSON низ.

JSON разбор

Точно как JavaScript има функция за стринифициране на JSON, ние също имаме функция за анализиране на този строгифициран JSON. Това е прототипът на функцията:

JSON.parse(text[, reviver])

Тук първият параметър е JSON низът, който трябва да бъде анализиран. Вторият параметър е по избор и може да бъде функция за модифициране на анализирания JSON преди връщането. Нека демонстрираме този метод на пример.

function Student(name, roll_number, age) { this.name = name; this.roll_number = roll_number; this.age = age; } var student1 = new Student("Abhishek", "123", 18); var str = JSON.stringify(student1); var parsedJSON = JSON.parse(str); console.log(parsedJSON,name. parsedJSON.roll_number, parsedJSON.age);

И изходът ще бъде Abhishek 123 18, така че JSON низът беше успешно анализиран.

You could use this to send data from client to server. The data to be sent can be JSON encoded at the client and the stringified JSON will be parsed at the server and processed. This makes it really easy.

JSON can also be used to transmit data across different programs written in different languages. All languages have libraries to stringify and parse JSON.

JSON vs. XML

XML or eXtensible Markup Language is a very popular way of storing and transmitting data, similar to JSON. It existed before JSON and is still widely used today.

For example, it's used in RSS feeds, which are still the most popular way of subscribing to some publication or author. There are also XML sitemaps which are a list of all pages on a website. And search engines use them to see if there are any new pages to be crawled.

XML uses markup format – similar to HTML but much stricter.

JSON and XML have various similarities and differences, as explained in the following points:

  • Both are human-readable
  • Both have a hierarchial structure
  • Both are widely supported across various programming languages
  • Both can be fetched from the server using HTTP requests
  • JSON is shorter than XML
  • JSON can use arrays
  • JSON can be parsed using standard JavaScript functions, whereas XML needs to be parsed using the XML DOM (which is slower)

The same data can be expressed in JSON and XML as follows:

JSON:

{"employees":[ { "firstName":"Quincy", "lastName":"Larson" }, { "firstName":"Abigail", "lastName":"Rennemeyer" }, { "firstName":"Abhishek", "lastName":"Chaudhary" } ]}

XML:

  Quincy Larson   Abigail Rennemeyer   Abhishek Chaudhary  

JSON е по-добър от XML по много причини, но това не означава, че трябва да изоставим XML. И все пак JSON ще се превърне в предпочитана форма за предаване на данни в бъдеще.

JWT - бъдещето на JSON

JSON Web Token (JWT) е отворен стандарт, който определя компактен и самостоятелен начин за сигурно предаване на информация между страните като JSON обект.

Тази информация може да бъде проверена и надеждна, защото е с цифров подпис. JWT могат да бъдат подписани с помощта на тайна (с алгоритъма HMAC) или двойка публичен / частен ключ, използвайки RSA или ECDSA.

Тези маркери могат да се използват за подписване на JSON данни и проверка на самоличността на подателя. Тъй като данните са подписани, ако някоя от данните е била подправена, веднага ще я разберете.

Though we won't discuss the implementation in full here, we can understand how it works. A JSON Web Token consists of three parts, the header, the payload and the signature.

The header consists of the type of token and algorithm used, the payload consists of the data, and the signature is the value you get when you sign the header and payload together.

The final token is in the form of ...

These tokens are currently used in authorization and are faster and more compact than other authorization methods. These may be very useful in the future and their potential is very high.

Conclusion

In this article, we've seen the importance of JSON as a medium of data transfer between completely different systems, and why is it so convenient.

JSON is a universal medium and is not just specific to JavaScript. JSON is already used in NoSQL databases to store data in JSON format.

We also compared JSON and XML and saw why JSON is more efficient and faster than XML. In the future, we may develop even better ways of transmitting data.

The rate at which the internet is growing, efficient data transfer will be the highest priority. And JSON serves that function really well for now.

You can try new things with JSON and implement different data structures – it's open to innovation, and we should never stop experimenting.

Hope you liked my article. I have learned a lot by writing it, and your appreciation motivates me everyday, Do visit my internet home theabbie.github.io.