Follow Me!

Contenuti

Support Me!

Visual Studio Code: Paste JSON as Code

Questa settimana vi voglio mostrare una recente scoperta -ovviamente casuale- fatta utilizzando Visual Studio Code. Si tratta di una estensione che vi permetter√† di copiare il vostro file JSON direttamente in codice sorgente. Personalmente la trovo molto comoda quando arrivano dei JSON dall’esterno e bisogna portarlo nel codice.

Paste JSON as Code

Lo scopo Paste JSON as Code √® abbastanza prevedibile dal nome e se non dovesse bastare vi ho aperto l’articolo con uno spoiler a tema.

Le features principali -prese dalla pagina del marketplace- sono le seguenti

  • Interactively generate types and (de-)serialization code from JSON, JSON Schema, and TypeScript
  • Paste JSON/JSON Schema/TypeScript as code

I dettagli dell’estensione ad oggi sono i seguenti:

Proprieta’Valore
Version12.0.46
Released on23/12/2017, 21:41:40
Last updated20/9/2018, 17:48:28
Publisherquicktype

Quello che vorrei farvi notare e’ il valore legato a Last updated che per i miei gusti e’ abbastanza vecchio. L’estensione pero’ e’ davvero valida, quindi valutate voi se utilizzarla o meno. Io una volta finito di usarla ho deciso di rimuoverla.

Utilizzo

Utilizzarla e’ davvero semplice. Vi serviranno due cose.

  • Un file JSON
  • VS Code

Per semplificare il tutorial utilizzero’ un JSON minimale come il seguente.

1
2
3
4
{
  "id": 1,
  "title": "hello"
}

Ora non vi resta che copiarlo con CTRL+C ed aprire VS Code. Ed ora?

  • CTRL + SHIFT + P
  • Cercare (o scrivere) Paste JSON as Code
  • Selezionare il linguaggio in cui si desidera “trasformare” il JSON (TypeScript, Python, Go, Ruby, C#, Java, Swift, Rust, Kotlin, C++, Flow, Objective-C, JavaScript, Elm, and JSON Schema.)
  • Inserire in Top-Level type name il nome della classe (ex. MinimalDto)

Attendere qualche secondo ed avrete il seguente contenuto.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// Generated by https://quicktype.io

namespace QuickType
{
    using System;
    using System.Collections.Generic;

    using System.Globalization;
    using Newtonsoft.Json;
    using Newtonsoft.Json.Converters;

    public partial class MinimalDto
    {
        [JsonProperty("id")]
        public long Id { get; set; }

        [JsonProperty("title")]
        public string Title { get; set; }
    }

    public partial class MinimalDto
    {
        public static MinimalDto FromJson(string json) => JsonConvert.DeserializeObject<MinimalDto>(json, QuickType.Converter.Settings);
    }

    public static class Serialize
    {
        public static string ToJson(this MinimalDto self) => JsonConvert.SerializeObject(self, QuickType.Converter.Settings);
    }

    internal static class Converter
    {
        public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
        {
            MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
            DateParseHandling = DateParseHandling.None,
            Converters = {
                new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
            },
        };
    }
}

Ora -per quanto mi riguarda- viene fornito un risultato nettamente piu’ ampio del necessario, ma cancellare il superfluo ci vuole un secondo. Anche la rimozione di partial non e’ male a mio avviso!

Credo manchi solo la voce “Do you want a coffee?” per renderla perfetta! Vero? Se invece volete offrirmi un caffe, sapete che vi dico? Lo prendo piu che volentieri!