Tous les produits
Search
Centre de documentation

MaxCompute:FROM_JSON

Dernière mise à jour :Aug 10, 2026

Renvoie une valeur de type ARRAY, MAP ou STRUCT à partir d'une chaîne JSON jsonStr et d'un schéma schema.

Syntaxe

from_json(<jsonStr>, <schema>)

Paramètres

  • jsonStr : obligatoire. Chaîne JSON en entrée.

  • schema : obligatoire. La syntaxe est identique à celle des types utilisés dans les instructions de création de table. Par exemple array<bigint>, map<string, array<string>> ou struct<a:int, b:double, .

    Remarque

    Les clés d'un type STRUCT sont sensibles à la casse. Il existe également une autre syntaxe pour le type STRUCT, telle que a bigint, b double, qui équivaut à struct<a:bigint, b:double>.

    Le tableau ci-dessous présente la correspondance entre les types de données JSON et les types de données MaxCompute.

    |
    **Type de données JSON**
    |
    **Type de données MaxCompute**
    | | --- | --- | |
    OBJECT
    |
    STRUCT, MAP, STRING
    | |
    ARRAY
    |
    ARRAY, STRING
    | |
    NUMBER
    |
    TINYINT, SMALLINT, INT, BIGINT, FLOAT, DOUBLE, DECIMAL, STRING
    | |
    BOOLEAN
    |
    BOOLEAN, STRING
    | |
    STRING
    |
    STRING, CHAR, VARCHAR, BINARY, DATE, DATETIME
    | |
    NULL
    |
    Tous les types
    |
    Remarque

    Pour les types OBJECT et ARRAY, l'analyse tente d'interpréter les données au maximum ; les types non correspondants sont ignorés. Pour faciliter l'utilisation, tous les types JSON peuvent être convertis au type STRING de MaxCompute. Notez toutefois que la précision décimale n'est pas garantie pour les types FLOAT, DOUBLE et DECIMAL. Pour garantir la précision, utilisez l'ancienne version de GET_JSON_OBJECT ou extrayez les données sous forme de type STRING avant de les convertir dans le type numérique approprié.





























Valeur de retour

Renvoie une valeur de type ARRAY, MAP ou STRUCT.

Exemples

  • Exemple 1 : Analyser une chaîne JSON spécifiée selon un format donné. Voici des exemples de commandes.

    --返回{a:1,b:0.8}。
    select from_json('{"a":1, "b":0.8}', 'a int, b double');
    
    --返回{time:26/08/2015}。
    select from_json('{"time":"26/08/2015"}', 'time string');
    
    --返回{a:1, b:0.8, c:NULL}。
    select from_json('{"a":1, "b":0.8}', 'a int, b double, c string');
    
    --返回[1,2,3]。
    select from_json('[1, 2, 3, "a"]', 'array<bigint>');
    
    --返回{a:1, b:[1,2,3], c:{}, d:v}。
    select from_json('{"a":1,"b":[1,2,3],"c":{},"d":"v"}', 'map<string, string>');
  • Exemple 2 : Utiliser les fonctions map_keys et from_json pour obtenir un effet similaire à celui de JSON_KEYS, c'est-à-dire récupérer l'ensemble de toutes les clés d'une chaîne JSON. Voici un exemple de commande.

    --返回[a, b]。
    select map_keys(from_json('{"a":1,"b":2}','map<string,string>'));

Fonctions associées

La fonction FROM_JSON appartient aux fonctions de type complexe ou aux fonctions de manipulation de chaînes.

  • Pour plus d'informations sur les fonctions de traitement des données de types complexes (telles que ARRAY, MAP, STRUCT et JSON), consultez la rubrique Fonctions de type complexe.

  • Pour plus d'informations sur les fonctions de recherche et de conversion de format de chaînes, consultez la rubrique Fonctions de chaîne.