×
          
              
          
      
      Clear all filters including search bar
          
        Valeri Tandilashvili's Personal Professional Blog
      
    .accordion {
  max-width: 600px;
  &__copy {
    display: none;
    padding: 1rem 1.5rem 2rem 1.5rem;
    &--open {
      display: block;
    }
  }
}.accordion {
  max-width: 600px;
}
.accordion__copy {
  display: none;
  padding: 1rem 1.5rem 2rem 1.5rem;
}
.accordion__copy--open {
  display: block;
}- Both JSON and XML are "self describing" (human readable)
- Both JSON and XML are hierarchical (values within values)
- Both JSON and XML are language independent
- Both JSON and XML can be parsed and used by lots of programming languages
- Both JSON and XML can be fetched with an XMLHttpRequest+ JSON doesn't use end tag
+ JSON is shorter
+ JSON is quicker to read and write
+ JSON can use arrays
+ Better Performance
+ JSON can be parsed easily
+ JSON object has a type
+ All major JavaScript frameworks support JSON
+ Supported by all major JavaScript frameworks
+ Supported by most backend technologies
+ JSON is recognized natively by JavaScript (as object)
- JSON doesn't support comments
- JSON can not use attributes
- JSON offers poor extensibility as no namespace support
- Supports limited data types{
   "company": Volkswagen,
   "name": "Vento",
   "price": 800000
}<car>
   <company>Volkswagen</company>
   <name>Vento</name>
   <price>800000</price>
</car>{
   "employees":[
      {"firstName":"John", "lastName":"Doe"},
      {"firstName":"Anna", "lastName":"Smith"},
      {"firstName":"Peter", "lastName":"Jones"}
   ]
}<employees>
  <employee>
    <firstName>John</firstName> <lastName>Doe</lastName>
  </employee>
  <employee>
    <firstName>Anna</firstName> <lastName>Smith</lastName>
  </employee>
  <employee>
    <firstName>Peter</firstName> <lastName>Jones</lastName>
  </employee>
</employees>elementsattributesdata types<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="company">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="id" type="xs:unsignedInt" />
        <xs:element name="name" type="xs:string" />
        <xs:element name="phone" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema><company>
    <id>2859385</id>
    <name>Tanmay Patil</name>
    <phone>(011) 123-4567</phone>
</company>https://www.liquid-technologies.com/online-xml-to-xsd-converter$schematitledescriptiontypepropertiesrequiredminimumexclusiveMinimummaximumexclusiveMaximummultipleOfmaxLengthminLengthpattern{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "title": "Product",
  "description": "A product from Acme's catalog",
  "type": "object",
  "properties": {
    "id": {
      "description": "The unique identifier for a product",
      "type": "integer"
    },
    "name": {
      "description": "Name of the product",
      "type": "string",
      "minLength": 5,
      "maxLength": 20
    },
    "price": {
      "type": "number",
      "minimum": 0,
      "exclusiveMinimum": true
    }
  },
  "required": [
    "id",
    "name",
    "price"
  ]
}{
    "id": 2,
    "name": "Lorem ipsum dolor si",
    "price": 0.5
}{
    "id": 2.5,
    "name": "Lorem ipsum dolor sit amet",
    "price": -0.5
}- Invalid type. Expected Integer but got Number
- String 'Lorem ipsum dolor sit amet' exceeds maximum length of 20
- Float -0.5 is less than minimum value of 0https://www.jsonschemavalidator.net/filtermaponlyMenunderTwentyonlyNameslet people = [
  {name: 'გიორგი', age: 15, gender: 'male'},
  {name: 'ეკატერინე', age: 35, gender: 'female'},
  {name: 'დავითი', age: 75, gender: 'male'},
  {name: 'ნინო', age: 18, gender: 'female'},
  {name: 'თორნიკე', age: 11, gender: 'male'}
]
function onlyMen(human) {
  return human.gender == 'male'
}
function underTwenty(human) {
  return human.age < 20
}
function onlyNames(human) {
  return human.name
}
let onlyBoysNames = people.filter(onlyMen).filter(underTwenty).map(onlyNames)
document.write(onlyBoysNames)string{ "name":"John" }float{ "age":30.5 } integer{ "age":30 } boolean{ "sale":true }array{ "employees":[ "John", "Anna", "Peter" ] }objectkey:value{ "employee":{ "name":"John", "age":30, "city":"New York" } } null{ "middlename":null } key/value:key/valuecommakeystrings{}{}{
   "id": "011A",
   "language": "JAVA",
   "price": 500,
}{}[]key/valuekey:key/value,,JSON{
   "book": [
      {
         "id": "01",
         "language": "Java",
         "edition": "third",
         "author": "Herbert Schildt"
      },
      {
         "id": "07",
         "language": "C++",
         "edition": "second",
         "author": "E.Balagurusamy"
      }
   ]
}^&|[][abcdef][-][a-g]last_nameუაREGEXPSELECT *
FROM students
WHERE last_name REGEXP 'უა'last_nameგეREGEXPSELECT *
FROM students
WHERE last_name REGEXP '^გე'last_nameუაREGEXPSELECT *
FROM students
WHERE last_name REGEXP 'უა$'last_nameუაიაSELECT *
FROM students
WHERE last_name REGEXP 'უა|ია'last_nameუაიაSELECT *
FROM students
WHERE last_name REGEXP '[იუ]ა'last_name[ა-უ]აSELECT *
FROM students
WHERE last_name REGEXP '[ა-უ]ა$'last_nameვაიაციSELECT *
FROM students
WHERE last_name REGEXP '^ცი|ია$|ვა'input[type=text]selectlet value = $("#element_id").val();let value = document.getElementById('element_id').value;'5input[type=text]select$("#element_id").val(5);let value = document.getElementById('element_id').value = 5;'let is_checked = $("#element_id").is(":checked");let is_checked = document.getElementById('element_id').checkedlet content = $("#element_id").html();let content = 
 document.getElementById('element_id').innerHTML$("#element_id").html('some html');document.getElementById('element_id').innerHTML = 'some html'placeholder$('#element_id').attr('placeholder');document.getElementById('element_id').getAttribute('placeholder');placeholder$('#element_id').attr('placeholder', 'new placeholder');document.getElementById('element_id').placeholder = 'new placeholder';$("#element_id").toggle();document.getElementById('element_id').classList.toggle("hide");.hide {
	display: none !important;
}radiolet result = jQuery('input:radio[name=vote]:checked').val();let result = document.querySelector('input[name=vote]:checked').value;ielement_idlet icon = $("#element_id").find('i');document.getElementById('element_id').querySelector('i');data-valuedatalistvalue$('#datalist_id [value="selected text"]').data('value');document.querySelector('#datalist_id option[value="selected text"]').getAttribute('data-value')let el = $('#element')
if(el.hasClass('arrow-down')) {
    el.removeClass('arrow-down');
    el.addClass('arrow-up');
} else {
    el.addClass('arrow-down');
    el.removeClass('arrow-up');
}let el = document.getElementById('element')
if (el.classList.contains('arrow-up')) {
    el.classList.remove('arrow-up');
    el.classList.add('arrow-down');
} else {
    el.classList.add('arrow-up');
    el.classList.remove('arrow-down');
}$.ajax({
    url:'demo_get.asp',
    success:function(sms){
        $('#demo').html(sms);                        
    }
});var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        document.getElementById("demo").innerHTML = this.responseText;
    }
};
xhttp.open("GET", "demo_get.asp", true);
xhttp.send();$('#element').on('mouseover', function(){
    console.log('mouse over');
});document.getElementById('element').addEventListener('mouseover', function(){
    console.log('mouse over');
});$('html, body').animate({scrollTop:($('#element').position().top)}, 400);function scrollDownToElement(el) {
    // Milliseconds per move 
    let pm = 50;
    // Padding from top
    let mft = 150;
    // Total animation milliseconds
    let scroll_ms = 500;
    // Calculates target element top position
    let bd_pos = document.body.getBoundingClientRect();
    let el_pos = document.getElementById(el).getBoundingClientRect();
    let height = el_pos.top-bd_pos.top-mft;
    // Calculates per move px
    let spm = height / (scroll_ms / pm);
    // The animation counter to stop
    let spmc = 1;
    let scroll_timer = setInterval(function() {
        // Moves down by {spm} px
        window.scrollBy(0, spm);
        spmc++;
        // Stops the animation after enough iterations
        if (spmc > (scroll_ms / pm)) {
            clearInterval(scroll_timer);
        }
    }, pm);
}
scrollDownToElement('element');