Mitä nämä tietomuodot ovat?

Ohjelmat tallentavat ja vaihtavat rakenteista dataa, kuten asetuksia, tietueita ja luetteloita, tekstimuodoissa, joista kukin esittää datan omalla tavallaan. Muunnin on kätevä, kun jokin ohjelma antaa dataa muodossa, jota toinen ohjelma ei osaa lukea, tai kun jokin muoto on helpompi lukea tai muokata kyseistä tehtävää varten.

Muoto Miten data esitetään Missä sitä käytetään
JSON Oliot aaltosulkeissa, luettelot hakasulkeissa, teksti lainausmerkeissä Web-rajapinnoissa ja sovellusten asetuksissa
YAML Sisennetyt key: value -rivit, luettelon alkiot alkavat merkillä - Docker Composessa, Kubernetesissä ja CI-putkien tiedostoissa
XML Elementit tageissa, joilla voi olla attribuutteja Asiakirjoissa, RSS-syötteissä ja SOAP-verkkopalveluissa
TOML key = value -rivit [table]-otsikoiden alla Asetustiedostoissa, kuten Cargo.toml ja pyproject.toml
TOON Sisennetyt rivit, tietuetiedot luetteloina rivien muodossa kenttien alla Rakenteisessa datassa, jota lähetetään tekoälyn kielimalleille
CSV Otsikkorivi, jota seuraa yksi rivi kutakin tietuetta kohti; arvot erotetaan pilkuilla Taulukkolaskennassa ja tietokantavienneissä
TSV Kuten CSV, mutta arvot erotetaan sarkaimilla Taulukkolaskennasta kopioiduissa soluissa
MessagePack Binaaridataa, joka näytetään tässä heksadesimaalitavuina Ohjelmien välisissä tiiviissä viesteissä
JSON5 JSON, joka sallii myös kommentit, yksinkertaiset lainausmerkit ja lainausmerkeittä kirjoitetut avaimet Käsin kirjoitetuissa asetustiedostoissa
JSONL Yksi JSON-arvo riviä kohden; kutsutaan myös JSON Lines- tai NDJSON-muodoksi Lokitiedoissa ja tietojoukoissa
INI key = value -rivit [section]-otsikoiden alla Ohjelmien asetustiedostoissa, kuten php.ini
Ominaisuustiedostot key = value -rivit pisteillä erotelluilla avaimilla Java-sovelluksissa, kuten Spring Bootin application.properties-tiedostoissa

Työkalun kuvaus

Tämä työkalu muuntaa dataa näiden 12 muodon välillä: JSON, YAML, XML, TOML, TOON, CSV, TSV, MessagePack, JSON5, JSONL, INI ja Java properties. Kaikki tämän työkalun tietomuotomuuntimet toimivat samalla tavalla, yleisestä tietomuotomuuntimesta yksittäisen muotoparin muuntimiin, kuten JSONista YAMLiksi, CSV:stä JSONiksi tai XML:stä JSONiksi: muunnin avautuu nimessään mainituilla muodoilla, ja Lähde- ja Kohde-valikoista voi valita mitkä tahansa muut muodot. Liitä tai kirjoita data, niin tulos näkyy kirjoittaessasi syntaksikorostetussa koodieditorissa ja on valmis kopioitavaksi. Vaihtopainike kääntää muunnoksen suunnan ja asettaa tuloksen uudeksi syötteeksi.

Jos syöte ei ole kelvollinen lähdemuodossa, virheilmoitus kertoo, mikä on vialla, yleensä ongelman rivin ja sarakkeen.

Data muunnetaan selaimessasi, eikä sitä koskaan ladata palvelimelle.

Esimerkki

Tämä JSON:

{
  "users": [
    { "id": 1, "name": "Ann", "admin": true },
    { "id": 2, "name": "Bo", "admin": false }
  ]
}

muuttuu tällaiseksi YAMLiksi:

users:
  - id: 1
    name: Ann
    admin: true
  - id: 2
    name: Bo
    admin: false

tällaiseksi CSV:ksi, jossa on yksi rivi käyttäjää kohden:

id,name,admin
1,Ann,true
2,Bo,false

ja tällaiseksi TOONiksi:

users[2]{id,name,admin}:
  1,Ann,true
  2,Bo,false

Miten muodot vastaavat toisiaan

Muodot eivät kaikki pysty esittämään samanlaisia tietoja, joten joissakin muunnoksissa noudatetaan seuraavia sääntöjä:

  • CSV ja TSV sisältävät taulukon. Ensimmäinen rivi nimeää sarakkeet, ja jokaisesta muusta rivistä tulee olio. Sisäkkäisistä olioista tulee niiden polun mukaan nimetyt sarakkeet, ja luetteloista tulee soluihinsa JSON-tekstiä, joten {"name": "Ann", "address": {"city": "Oslo"}, "tags": ["a", "b"]} muuttuu sarakkeiksi name, address.city ja tags. Takaisin muunnettaessa näistä sarakkeista tulee jälleen sisäkkäisiä olioita ja luetteloita. Kun data on olio, joka sisältää yhden luettelon, kuten {"users": [...]}, rivit muodostuvat luettelon alkioista, ja luetteloiden luettelosta tulee rivejä ilman otsikkoa.
  • Tekstiarvot: CSV, TSV, XML, INI ja properties sisältävät vain tekstiä, joten muuntimet muuttavat arvot true ja false totuusarvoiksi sekä selkeästi kirjoitetut luvut, kuten 42 tai 3.5, numeroiksi. Arvot, kuten 007, 1.50 tai 1e3, säilyvät tekstinä, jotta postinumerot ja versionumerot pysyvät täsmälleen alkuperäisessä muodossaan.
  • XML: attribuuteista tulee avaimia, joiden alussa on @, ja attribuutteja sisältävän elementin tekstistä tulee #text: <price currency="USD">44.95</price> muuttuu muotoon {"@currency": "USD", "#text": 44.95}. Toistuvista elementeistä tulee luettelo. XML-muotoon muunnettaessa @-merkillä alkavista avaimista tulee jälleen attribuutteja. Oliosta, jossa on yksi avain, jonka arvo ei ole luettelo, tulee juurielementti. Muu data sijoitetaan <root>-elementtiin, ja luettelon ylimmän tason kukin alkio sijoitetaan <item>-elementtiin. Merkit, joita ei voi käyttää XML-nimissä, kuten välilyönnit, korvataan _-merkillä.
  • TOML, INI ja properties voivat sisältää ylimmällä tasolla vain nimettyjä arvoja, joten luettelomuotoinen data kirjoitetaan nimen items alle ja yksittäinen arvo nimen value alle. TOML ei tue null-arvoja, joten ne jätetään pois.
  • INI kirjoittaa sisäkkäiset oliot osioiksi, kuten [server.ssl], arvoluettelot riveiksi muodossa key[] = value ja olioluettelot sijaintinsa mukaan nimetyiksi osioiksi, kuten [users.0].
  • Properties yhdistää sisäkkäiset nimet pisteillä ja merkitsee luettelon alkioiden järjestysnumerot hakasulkeisiin, kuten app.hosts[0], Spring Bootin tapaan. YAML- tai JSON-muotoon muunnettaessa näistä avaimista tulee sisäkkäisiä olioita ja luetteloita, joten application.properties-tiedosto muunnetaan application.yml-tiedoston rakennetta vastaavaksi. Latin-1-merkistön ulkopuoliset merkit kirjoitetaan \u-koodauksina.
  • YAML-tuloksissa lainausmerkkeihin laitetaan teksti, jonka YAML 1.1 -lukijat tulkitsisivat joksikin muuksi, kuten on, yes tai päivämäärä. Näin YAML 1.1- ja YAML 1.2 -lukijat saavat saman datan. YAML-tiedostosta, jossa on useita ----merkillä erotettuja dokumentteja, tulee luettelo näistä dokumenteista, ja <<-yhdistämisavaimet täydennetään.
  • MessagePack on binaarimuoto, joten työkalut lukevat ja kirjoittavat sitä heksadesimaalisina tavuina: {"a": 1} on 81 A1 61 01. Syötteessä voi olla välilyöntejä, pilkkuja ja kunkin tavun edessä 0x. Useista peräkkäisistä viesteistä tulee luettelo.
  • JSONL-tuloksissa kukin luettelon alkio on omalla rivillään.
  • Kokonaisluvut, jotka ovat liian suuria JavaScriptin numeroiksi, kuten 64-bittiset tunnisteet, säilyttävät kaikki numeronsa.
  • TOML-päivämääristä ja -ajoista sekä MessagePack-aikaleimoista tulee tekstiä, kuten 1979-05-27T07:32:00Z.

Vinkkejä

  • Jos haluat muuntaa taulukkolaskennan soluja, kopioi ne ja liitä ne TSV-muodossa: taulukkolaskentasovellukset kopioivat solut sarkaimilla erotettuna tekstinä.
  • CSV ja TSV sopivat dataan, joka koostuu samankaltaisten tietueiden luettelosta. Syvästi sisäkkäistä dataa on helpompi lukea YAML-, TOML- tai TOON-muodossa.
  • YAML-, XML-, TOML-, JSON5-, INI- ja properties-tiedostojen kommentteja ei säilytetä, koska muuntimet siirtävät vain datan.