Siit saate teada, kuidas kasutada JSON-i käsuridade tööriista fx tõhusalt

fx on populaarne käsuridade tööriist JSON. Selle saab installida npm kaudu, pruulida või alla laadida eraldi kahendkoodina.

npm i -g fx

fx on käepärane curl-käsuga. Kui teil on mõni JSON-i tagastav rakendusliides ja soovite sellesse süveneda või lihtsalt seda näha, sisestage JSON-i fx-i.

lokkima https://swapi.co/api/planets/ | fx

fx-l on tõeliselt puhas interaktiivne režiim JSON-i kaevamiseks.

JSON-is navigeerimiseks võite kasutada hiire või nooleklahve. fx toetab voldid, klõpsake selle laiendamiseks failil või vajutage laiendamiseks nuppu press️ parem nool. Kõigi väljade rekursiivseks laiendamiseks vajutage nuppu e. Kõigi tagasi ahendamiseks vajutage klahve Shift + e.

Interaktiivne kaevaja

Vajutage interaktiivses režiimis nuppu. (punkti) klahv. Näete terminali akna lõpus kursorit koos JSON-väljade hüpikaknaga. Kasutage nooleklahve välja valimiseks ja vajutage sisestusklahvi, jätkake, kuni leiate vajalikud andmed. Kui soovite ühe taseme võrra tagasi minna, vajutage viimase tee lõigu kustutamiseks Ctrl + w. See käsk eemaldab täpselt viimase osa kõrval. või [sulg. Kui soovite alustada uuesti, vajutage Ctrl + u.

BTW, sellele väljale saate kirjutada mis tahes JavaScripti avaldisi, mitte ainult radade avaldisi.

Päris trükkimine

Mõnikord ei vaja te interaktiivset ekskavaatorit ja soovite JSONi välja printida. Seda saab teha lisades. argument käsu fx jaoks.

lokkima https://swapi.co/api/planets/1/ | fx.

Või ainult osa JSON-i printimiseks määrake soovitud tee.

lokkima https://swapi.co/api/planets/1/ | fx .filmid

API taotlemine iga kord on aeganõudev, mis juhtuks, kui me selle kõigepealt kettale salvestame?

curl https://swapi.co/api/planets/1/> data.json

Nüüd saame faili esimese argumendina edastada fx-le.

fx data.json .films

Iga argument fx kohta võib olla mingi JavaScripti funktsioon, loome sinna .fxrc faili, kuhu paneme kasuliku funktsiooni ja katkendid taaskasutamiseks.

Katkendid

Lisagem meie käsureale lodaši jõud. Installige lodash ülemaailmselt.

npm i -g lodash

Looge oma kodukataloogi .fxrc-fail. Ja pane järgmine rida sinna.

Object.assign (globaalne, nõuda ('lodash / fp'))

Nüüd saate helistada kõigile lodashi meetoditele ka ilma _ eesliidet kasutamata. Näiteks vaadake, kes on hiljuti reageerimisele pühendunud:

curl 'https://api.github.com/repos/facebook/react/commits' \
| fx 'groupBy ("activ.author.name")' 'mapValues ​​(suurus)' \
      toPairs 'sortBy (1)' reverse 'take (10)' from Paidelt

Arvestagem erinevate sõnade kasutamist sõnumites.

curl 'https://api.github.com/repos/facebook/react/commits' \
| fx 'kaart (' activ.message ')' 'kaart (sõnad)' lapik \
     'map (lowerCase)' 'groupBy (identiteet)' 'mapValues ​​(size)' \
      toPairs 'sortBy (1)' reverse 'take (30)' from Paidelt

Oma lõikude lisamine

Ka see on üsna lihtne. Näiteks on mul üks API, mis nõuab dokumentide base64 kodeerimist. Vaatame, kuidas seda teha saab.

Looge mõni funktsioon ja määrake globaalseks. Näiteks base64 katkend.

global.base64 = str => puhver.st (str) .toString ('base64')

Nüüd olen võimeline tegema midagi sellist:

fx data.json '{väärtus: base64 (JSON.stringify (this))}') lokkima -X POST

Või kui jagada eraldi funktsioonideks:

fx data.json JSON.stringify base64 '{väärtus: see}' | lokkima -X POST

Redigeerige kohapeal

Fx-iga saate JSON-objekte hõlpsalt modifitseerida, kasutades hajutavat operaatorit.

kaja '{"arv": 0}' | fx '{... see, loendage: see.loend + 1}'

Kuid kui proovite faili muuta ja ühe käsuga kettale salvestada, siis rikute faili.

fx data.json '{... this, count: this.count + 1}'> data.json

See on ühine kõigi käsuridade puhul. Näiteks on sed-l spetsiaalne lipp kohapeal oleva sed -i muutmiseks. Lisageme selle funktsiooni ka.

global.save = json => (vaja ('fs'). writeFileSync (protsess.argv [2], JSON.stringify (json, null, 2)), json)

Ja nüüd saame helistada lihtsalt päästmisele:

fx data.json '{... see, arv: 1}' salvesta

Saame kettale salvestades isegi muudetud välja väljastada.

fx data.json '{... this, count: this.count + 1}' salvesta .count

Xargi kasutamine

fx prindib stringid stardiväljunditeks „tooretena” ilma jutumärkideta, nii et see võib olla kasulik fx-filtrite rääkimiseks mitte JSON-põhiste süsteemidega. Aga kui tahame edastada argumentide nimekirja? Järgmine katkend tuleb kasuks.

global.list = json => (json.forEach (x => console.log (x)), määratlemata)

Vaikimisi prinditakse määratlemata stderrisse, nii et see ei mõjuta meie torusid.

lokkima https://swapi.co/api/planets/1/ | fx .filmi nimekiri | xargs curl

Otsin JSON-ist

fx toetab interaktiivset JSON-otsimist. Vajutage /, et sisestada muster otsimiseks.

Järgmisele mustrimängule liikumiseks vajutage nuppu n. Filtrit saab rakendada rakendusega. samuti. fx töötab suurepäraselt mõlema korraga.

Aga mis siis, kui me tahame midagi teistsugust?

Ma arvan, et JavaScript on JSON-iga töötamiseks parim keel (lühend JavaScripti objektide märkimisest). Mida me tahame leida mõne mustri kõik esinemised ja printida see välja? Saame luua oma otsingulõigu. Nii et loome otsingulõigu!

Nüüd saame meie JSON-ist rekursiivselt otsida!

fx data.json 'leidke (/ fix / i)'

Ja veelgi parem, kui kasutada eelmist katkendite loendit, saate printida rajatud osi.

fx data.json 'leidke (/ fix / i)' loend | xargs -L1 fx data.json

Voogesitus

fx toetab ka JSON-i voogesitust. Saate seda kasutada logide sõelumiseks jne.

kubectl palgid ... | fx .teade

Valige (või filtreerige) ainult soovitud kirjad, valides abistaja.

kubectl palgid ... | fx 'valige (x => x.level == "info")' .sõnum

Või ühendage mõni JSON-fail kassiga ja ühendage fx-iga.

kass * .json | fx .length

Teemad toetavad

fx toetab ka teemasid. Saate muuta värve ja taanet.

global.FX_STYLE_SPACE = 4

Kaks vingemat teemat fx jaoks on allpool:

  • fx-teema-monokai - monokai teema
  • fx-teema-öö - öö teema

Loodetavasti naudite fx-i kasutamist!

Kui teile meeldib see, mida ma teen, kaaluge mulle Patreoni toetamist.
Ja jälgige mind GitHubis.