

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Dati JSON
<a name="querying-JSON"></a>

Amazon Athena consente di analizzare i valori con codifica JSON, estrarre i dati da JSON, cercare valori e trovare i valori di lunghezza e dimensioni per matrici JSON. Per apprendere le nozioni di base sull’interrogazione dei dati JSON in Athena, prendi in considerazione i seguenti dati planetari di esempio:

```
{name:"Mercury",distanceFromSun:0.39,orbitalPeriod:0.24,dayLength:58.65}
{name:"Venus",distanceFromSun:0.72,orbitalPeriod:0.62,dayLength:243.02}
{name:"Earth",distanceFromSun:1.00,orbitalPeriod:1.00,dayLength:1.00}
{name:"Mars",distanceFromSun:1.52,orbitalPeriod:1.88,dayLength:1.03}
```

Notate come ogni record (essenzialmente, ogni riga della tabella) si trovi su una riga distinta. Per interrogare questi dati JSON, puoi usare un'`CREATE TABLE`istruzione come la seguente:

```
CREATE EXTERNAL TABLE `planets_json`(
  `name` string,
  `distancefromsun` double,
  `orbitalperiod` double,
  `daylength` double)
ROW FORMAT SERDE
  'org.openx.data.jsonserde.JsonSerDe'
STORED AS INPUTFORMAT
  'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
  'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat'
LOCATION
  's3://amzn-s3-demo-bucket/json/'
```

Per interrogare i dati, utilizzate un’`SELECT`istruzione semplice come nell’esempio seguente.

```
SELECT * FROM planets_json
```

I risultati sono simili ai seguenti:


****  

| \# | nome | distanza dal sole | periodo orbitale | durata del giorno | 
| --- | --- | --- | --- | --- | 
| 1 | Mercurio | 0,39 | 0,24 | 58,65 | 
| 2 | Venere | 0,72 | 0,62 | 243,02 | 
| 3 | Terra | 1.0 | 1.0 | 1.0 | 
| 4 | Marte | 1,52 | 1,88 | 1,03 | 

Nota come l’`CREATE TABLE`istruzione utilizza il[OpenX JSON SerDe](openx-json-serde.md), che richiede che ogni record JSON si trovi su una riga separata. Se il JSON è in un bel formato di stampa o se tutti i record sono su una sola riga, i dati non verranno letti correttamente.

Per interrogare dati JSON in un bel formato di stampa, puoi usare [Amazon Ion Hive SerDe](ion-serde.md) invece di SerDe OpenX JSON. Considerate i dati precedenti memorizzati in un grazioso formato di stampa:

```
{
  name:"Mercury",
  distanceFromSun:0.39,
  orbitalPeriod:0.24,
  dayLength:58.65
}
{
  name:"Venus",
  distanceFromSun:0.72,
  orbitalPeriod:0.62,
  dayLength:243.02
}
{
  name:"Earth",
  distanceFromSun:1.00,
  orbitalPeriod:1.00,
  dayLength:1.00
}
{
  name:"Mars",
  distanceFromSun:1.52,
  orbitalPeriod:1.88,
  dayLength:1.03
}
```

Per interrogare questi dati senza riformattarli, puoi usare un'`CREATE TABLE`istruzione come la seguente. Nota che, invece di specificare OpenX SerDe JSON, l'istruzione specifica. `STORED AS ION` 

```
CREATE EXTERNAL TABLE `planets_ion`(
  `name` string,
  `distancefromsun` DECIMAL(10, 2),
  `orbitalperiod` DECIMAL(10, 2),
  `daylength` DECIMAL(10, 2))
STORED AS ION
LOCATION
  's3://amzn-s3-demo-bucket/json-ion/'
```

La query `SELECT * FROM planets_ion` produce gli stessi risultati di prima. Per ulteriori informazioni sulla creazione di tabelle in questo modo utilizzando Amazon Ion Hive SerDe, consulta[Creare tabelle Amazon Ion](ion-serde-using-create-table.md).

L’esempio precedente i dati JSON non contengono tipi di dati complessi come array o strutture annidate. Per ulteriori informazioni sull’esecuzione di query sui dati JSON annidati, consulta. [Esempio di deserializzazione di un JSON nidificato](openx-json-serde.md#nested-json-serde-example)

**Topics**
+ [Best practice per la lettura di dati JSON](parsing-json-data.md)
+ [Estrarre dati JSON da stringhe](extracting-data-from-JSON.md)
+ [Cercare valori nelle matrici JSON](searching-for-values.md)
+ [Ottenere matrici JSON di lunghezza e dimensione](length-and-size.md)
+ [Risolvere i problemi relativi alle query JSON](json-troubleshooting.md)